@tscircuit/schematic-trace-solver 0.0.172 → 0.0.173
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.js +27 -0
- package/lib/solvers/SameNetJunctionAlignmentSolver/placeGroundRailLabelsAtOuterEnd.ts +49 -0
- package/package.json +1 -1
- package/tests/repros/__snapshots__/repro-tida010076-j4-ground-bus.snap.svg +1 -8
- package/tests/repros/__snapshots__/repro-tida010076-page02.snap.svg +2 -58
- package/tests/repros/__snapshots__/repro-tmp1075-ground-label-overlap.snap.svg +3 -3
- package/tests/repros/assets/repro-tida010076-page02.input.json +2 -0
- package/tests/repros/repro-tida010076-j4-ground-bus.test.ts +1 -0
- package/tests/repros/repro-tmp1075-ground-label-overlap.test.ts +12 -0
package/dist/index.js
CHANGED
|
@@ -13307,6 +13307,33 @@ var placeGroundRailLabelsAtOuterEnd = ({
|
|
|
13307
13307
|
}
|
|
13308
13308
|
}
|
|
13309
13309
|
}
|
|
13310
|
+
for (let index = 0; index < output.length; index++) {
|
|
13311
|
+
const label = output[index];
|
|
13312
|
+
if (label.orientation !== "y-") continue;
|
|
13313
|
+
const connection = inputProblem.netConnections.find(
|
|
13314
|
+
(candidate) => candidate.isGround && candidate.netId === label.netId && candidate.pinIds.length > 2
|
|
13315
|
+
);
|
|
13316
|
+
if (!connection) continue;
|
|
13317
|
+
const anchorPoint = traces.filter((trace) => trace.globalConnNetId === label.globalConnNetId).flatMap((trace) => trace.tracePath).filter(
|
|
13318
|
+
(point) => nearlyEqual(point.x, label.anchorPoint.x) && point.y < label.anchorPoint.y
|
|
13319
|
+
).sort((a, b) => a.y - b.y)[0];
|
|
13320
|
+
if (!anchorPoint) continue;
|
|
13321
|
+
const center = getCenterFromAnchor(
|
|
13322
|
+
anchorPoint,
|
|
13323
|
+
label.orientation,
|
|
13324
|
+
label.width,
|
|
13325
|
+
label.height
|
|
13326
|
+
);
|
|
13327
|
+
const bounds = getRectBounds(center, label.width, label.height);
|
|
13328
|
+
if (obstacles.some((obstacle) => rectsOverlap(bounds, obstacle)) || traceCrossesBoundsInterior(bounds, traceMap) || output.some(
|
|
13329
|
+
(other, otherIndex) => otherIndex !== index && rectsOverlap(
|
|
13330
|
+
bounds,
|
|
13331
|
+
getRectBounds(other.center, other.width, other.height)
|
|
13332
|
+
)
|
|
13333
|
+
))
|
|
13334
|
+
continue;
|
|
13335
|
+
output[index] = { ...label, anchorPoint, center };
|
|
13336
|
+
}
|
|
13310
13337
|
return output;
|
|
13311
13338
|
};
|
|
13312
13339
|
|
|
@@ -118,5 +118,54 @@ export const placeGroundRailLabelsAtOuterEnd = ({
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
+
|
|
122
|
+
for (let index = 0; index < output.length; index++) {
|
|
123
|
+
const label = output[index]!
|
|
124
|
+
if (label.orientation !== "y-") continue
|
|
125
|
+
// Use producer metadata so ground aliases do not require name matching.
|
|
126
|
+
const connection = inputProblem.netConnections.find(
|
|
127
|
+
(candidate) =>
|
|
128
|
+
candidate.isGround &&
|
|
129
|
+
candidate.netId === label.netId &&
|
|
130
|
+
candidate.pinIds.length > 2,
|
|
131
|
+
)
|
|
132
|
+
if (!connection) continue
|
|
133
|
+
|
|
134
|
+
// Reuse the lowest point on the existing column without changing the trace.
|
|
135
|
+
const anchorPoint = traces
|
|
136
|
+
.filter((trace) => trace.globalConnNetId === label.globalConnNetId)
|
|
137
|
+
.flatMap((trace) => trace.tracePath)
|
|
138
|
+
.filter(
|
|
139
|
+
(point) =>
|
|
140
|
+
nearlyEqual(point.x, label.anchorPoint.x) &&
|
|
141
|
+
point.y < label.anchorPoint.y,
|
|
142
|
+
)
|
|
143
|
+
.sort((a, b) => a.y - b.y)[0]
|
|
144
|
+
if (!anchorPoint) continue
|
|
145
|
+
|
|
146
|
+
const center = getCenterFromAnchor(
|
|
147
|
+
anchorPoint,
|
|
148
|
+
label.orientation,
|
|
149
|
+
label.width,
|
|
150
|
+
label.height,
|
|
151
|
+
)
|
|
152
|
+
const bounds = getRectBounds(center, label.width, label.height)
|
|
153
|
+
// Keep the original anchor when the ground symbol would collide.
|
|
154
|
+
if (
|
|
155
|
+
obstacles.some((obstacle) => rectsOverlap(bounds, obstacle)) ||
|
|
156
|
+
traceCrossesBoundsInterior(bounds, traceMap) ||
|
|
157
|
+
output.some(
|
|
158
|
+
(other, otherIndex) =>
|
|
159
|
+
otherIndex !== index &&
|
|
160
|
+
rectsOverlap(
|
|
161
|
+
bounds,
|
|
162
|
+
getRectBounds(other.center, other.width, other.height),
|
|
163
|
+
),
|
|
164
|
+
)
|
|
165
|
+
)
|
|
166
|
+
continue
|
|
167
|
+
|
|
168
|
+
output[index] = { ...label, anchorPoint, center }
|
|
169
|
+
}
|
|
121
170
|
return output
|
|
122
171
|
}
|
package/package.json
CHANGED
|
@@ -65,13 +65,6 @@ orientation: y-" data-x="0.9750000000000001" data-y="-1.7000000000000002" cx="40
|
|
|
65
65
|
.port-label { fill: rgb(0, 100, 100); }
|
|
66
66
|
.component-name { fill: rgb(0, 100, 100); }
|
|
67
67
|
|
|
68
|
-
</style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 681.8895883238 416.1328059718 L 715.3139100886 416.1328059718 L 715.3139100886 349.2841624422 L 681.8895883238 349.2841624422" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.73945741184px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 681.8895883238 416.1328059718 L 715.3139100886 416.1328059718 L 715.3139100886 349.2841624422 L 681.8895883238 349.2841624422" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.34243217648px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 681.8895883238 482.9814495014 L 715.3139100886 482.9814495014 L 715.3139100886 416.1328059718 L 681.8895883238 416.1328059718" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.73945741184px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 681.8895883238 482.9814495014 L 715.3139100886 482.9814495014 L 715.3139100886 416.1328059718 L 681.8895883238 416.1328059718" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.34243217648px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><path d="M 681.8895883238 549.8300930309999 L 715.3139100886 549.8300930309999 L 715.3139100886 482.9814495014 L 681.8895883238 482.9814495014" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.73945741184px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 681.8895883238 549.8300930309999 L 715.3139100886 549.8300930309999 L 715.3139100886 482.9814495014 L 681.8895883238 482.9814495014" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.34243217648px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"><path d="M 715.3139100886 549.8300930309999 L 715.3139100886 650.1030583254001" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.73945741184px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 715.3139100886 549.8300930309999 L 715.3139100886 650.1030583254001" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.34243217648px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><circle cx="681.8895883238" cy="416.1328059718" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/><circle cx="715.3139100886" cy="416.1328059718" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><circle cx="681.8895883238" cy="482.9814495014" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/><circle cx="715.3139100886" cy="482.9814495014" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><circle cx="715.3139100886" cy="549.8300930309999" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="489.6997381762" y="123.6699905298" width="125.34120661799994" height="484.6526655896" stroke-width="3.34243217648px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="489.6997381762" y="123.6699905298" width="125.34120661799994" height="484.6526655896" fill="transparent"/><text class="sch-text" x="552.3703414852" y="365.9963233246" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="30.081889588319996px" transform="rotate(0, 552.3703414852, 365.9963233246)">J4</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="182.16255361819998" x2="678.54715614732" y2="182.16255361819998" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="681.8895883238" cy="182.16255361819998" r="3.34243217648" stroke-width="3.34243217648px"/><rect x="678.54715614732" y="178.82012144171998" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="178.82012144171998" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="249.0111971478" x2="678.54715614732" y2="249.0111971478" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="681.8895883238" cy="249.0111971478" r="3.34243217648" stroke-width="3.34243217648px"/><rect x="678.54715614732" y="245.66876497132" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="245.66876497132" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="349.2841624422" x2="681.8895883238" y2="349.2841624422" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><rect x="678.54715614732" y="345.94173026572" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="345.94173026571997" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="416.1328059718" x2="681.8895883238" y2="416.1328059718" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><rect x="678.54715614732" y="412.79037379532" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="412.79037379531997" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="482.9814495014" x2="681.8895883238" y2="482.9814495014" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><rect x="678.54715614732" y="479.63901732492" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="479.63901732491996" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="549.8300930309999" x2="681.8895883238" y2="549.8300930309999" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><rect x="678.54715614732" y="546.48766085452" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="546.48766085452" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">6</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="681.8895883238" cy="182.16255361819998" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="681.8895883238" cy="249.0111971478" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="681.8895883238" cy="349.2841624422" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="681.8895883238" cy="416.1328059718" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="681.8895883238" cy="482.9814495014" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="681.8895883238" cy="549.8300930309999" r="6.68486435296" fill="red" opacity="0"/></g><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="
|
|
69
|
-
M 715.3139100886,650.1030583254001
|
|
70
|
-
L 732.026070971,659.1276252018961
|
|
71
|
-
L 732.026070971,716.4391955879398
|
|
72
|
-
L 698.6017492062,716.4391955879398
|
|
73
|
-
L 698.6017492062,659.1276252018961
|
|
74
|
-
Z
|
|
75
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="3.34243217648px"/><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="715.3139100886" y="665.14400311956" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="30.081889588319996px" transform="rotate(90 715.3139100886 665.14400311956)">XX</text><text class="sch-text" x="600.00000000004" y="630.04846526652" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="30.081889588319996px" transform="rotate(0, 600.00000000004, 630.04846526652)">09452812800</text><text class="sch-text" x="509.75433123508003" y="104.45100551503998" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="30.081889588319996px" transform="rotate(0, 509.75433123508003, 104.45100551503998)">J4</text><rect class="schematic-box sch-box" x="489.6997381762" y="615.00752047236" width="220.60052364767995" height="30.081889588319882" stroke-width="3.34243217648px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="26.73945741184 13.36972870592"/><rect class="schematic-box sch-box" x="479.67244164676003" y="83.56080441204" width="60.16377917663999" height="41.78040220600002" stroke-width="3.34243217648px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="26.73945741184 13.36972870592"/>
|
|
68
|
+
</style><rect class="boundary" x="0" y="0" width="1200" height="800"/><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><path d="M 681.8895883238 416.1328059718 L 715.3139100886 416.1328059718 L 715.3139100886 349.2841624422 L 681.8895883238 349.2841624422" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.73945741184px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 681.8895883238 416.1328059718 L 715.3139100886 416.1328059718 L 715.3139100886 349.2841624422 L 681.8895883238 349.2841624422" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.34243217648px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><path d="M 681.8895883238 482.9814495014 L 715.3139100886 482.9814495014 L 715.3139100886 416.1328059718 L 681.8895883238 416.1328059718" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.73945741184px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 681.8895883238 482.9814495014 L 715.3139100886 482.9814495014 L 715.3139100886 416.1328059718 L 681.8895883238 416.1328059718" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.34243217648px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><path d="M 681.8895883238 549.8300930309999 L 715.3139100886 549.8300930309999 L 715.3139100886 482.9814495014 L 681.8895883238 482.9814495014" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.73945741184px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 681.8895883238 549.8300930309999 L 715.3139100886 549.8300930309999 L 715.3139100886 482.9814495014 L 681.8895883238 482.9814495014" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.34243217648px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace sch-trace" data-layer="base" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"><path d="M 715.3139100886 549.8300930309999 L 715.3139100886 650.1030583254001" class="trace-invisible-hover-outline sch-trace-hitbox" stroke="rgb(0, 150, 0)" fill="none" stroke-width="26.73945741184px" stroke-linecap="round" opacity="0" stroke-linejoin="round"/><path class="sch-trace-path" d="M 715.3139100886 549.8300930309999 L 715.3139100886 650.1030583254001" stroke="rgb(0, 150, 0)" fill="none" stroke-width="3.34243217648px" stroke-linecap="round" stroke-linejoin="round"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_0__stack1"><circle cx="681.8895883238" cy="416.1328059718" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/><circle cx="715.3139100886" cy="416.1328059718" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_1__stack1"><circle cx="681.8895883238" cy="482.9814495014" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/><circle cx="715.3139100886" cy="482.9814495014" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_2__stack1"><circle cx="715.3139100886" cy="549.8300930309999" r="5.01364826472" class="trace-junction sch-trace-junction" fill="rgb(0, 150, 0)"/></g><g class="trace-overlays sch-trace-overlays" data-layer="overlay" data-circuit-json-type="schematic_trace" data-schematic-trace-id="schematic_trace_3__stack1"/><g class="sch-component" data-circuit-json-type="schematic_component" data-schematic-component-id="schematic_component_0__stack1"><rect class="component chip sch-component-body" x="489.6997381762" y="123.6699905298" width="125.34120661799994" height="484.6526655896" stroke-width="3.34243217648px" fill="rgb(255, 255, 194)" stroke="rgb(132, 0, 0)"/><rect class="component-overlay sch-component-overlay" x="489.6997381762" y="123.6699905298" width="125.34120661799994" height="484.6526655896" fill="transparent"/><text class="sch-text" x="552.3703414852" y="365.9963233246" fill="#0f172a" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="30.081889588319996px" transform="rotate(0, 552.3703414852, 365.9963233246)">J4</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="182.16255361819998" x2="678.54715614732" y2="182.16255361819998" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_0__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="681.8895883238" cy="182.16255361819998" r="3.34243217648" stroke-width="3.34243217648px"/><rect x="678.54715614732" y="178.82012144171998" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="178.82012144171998" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">1</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="249.0111971478" x2="678.54715614732" y2="249.0111971478" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_1__stack1"><circle class="component-pin sch-component-pin sch-port-terminal" cx="681.8895883238" cy="249.0111971478" r="3.34243217648" stroke-width="3.34243217648px"/><rect x="678.54715614732" y="245.66876497132" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="245.66876497132" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">2</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="349.2841624422" x2="681.8895883238" y2="349.2841624422" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_2__stack1"><rect x="678.54715614732" y="345.94173026572" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="345.94173026571997" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">3</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="416.1328059718" x2="681.8895883238" y2="416.1328059718" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_3__stack1"><rect x="678.54715614732" y="412.79037379532" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="412.79037379531997" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">4</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="482.9814495014" x2="681.8895883238" y2="482.9814495014" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_4__stack1"><rect x="678.54715614732" y="479.63901732492" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="479.63901732491996" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">5</text><line class="component-pin sch-component-pin sch-port-line" x1="615.0409447942" y1="549.8300930309999" x2="681.8895883238" y2="549.8300930309999" stroke-width="3.34243217648px"/><g class="sch-port" data-schematic-port-id="source_port_0_5__stack1"><rect x="678.54715614732" y="546.48766085452" width="6.68486435296" height="6.68486435296" opacity="0"/></g><text class="pin-number sch-pin-number" x="648.465266559" y="546.48766085452" style="font-family: sans-serif;" fill="rgb(169, 0, 0)" text-anchor="middle" dominant-baseline="auto" font-size="25.0682413236px" transform="">6</text></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_0__stack1"><circle cx="681.8895883238" cy="182.16255361819998" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_1__stack1"><circle cx="681.8895883238" cy="249.0111971478" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_2__stack1"><circle cx="681.8895883238" cy="349.2841624422" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_3__stack1"><circle cx="681.8895883238" cy="416.1328059718" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_4__stack1"><circle cx="681.8895883238" cy="482.9814495014" r="6.68486435296" fill="red" opacity="0"/></g><g class="schematic-port-hover sch-port-hover" data-schematic-port-id="source_port_0_5__stack1"><circle cx="681.8895883238" cy="549.8300930309999" r="6.68486435296" fill="red" opacity="0"/></g><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_0__stack1" x="695.25931702972" y="650.1030583254001" width="40.10918611775992" height="30.081889588319996" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_0__stack1" d="M 695.25931702972 680.18494791372 L 735.3685031474799 680.1849479137201" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.34243217648px" 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_0__stack1" d="M 715.3139100886 680.18494791372 L 715.3139100886 650.1030583254001" stroke="rgb(132, 0, 0)" fill="none" stroke-width="3.34243217648px" 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_0__stack1" x="715.3139100886" y="688.5410283549201" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="30.081889588319996px">XX</text><text class="sch-text" x="600.00000000004" y="630.04846526652" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="30.081889588319996px" transform="rotate(0, 600.00000000004, 630.04846526652)">09452812800</text><text class="sch-text" x="509.75433123508003" y="104.45100551503998" fill="#7e22ce" text-anchor="middle" dominant-baseline="middle" font-family="sans-serif" font-size="30.081889588319996px" transform="rotate(0, 509.75433123508003, 104.45100551503998)">J4</text><rect class="schematic-box sch-box" x="489.6997381762" y="615.00752047236" width="220.60052364767995" height="30.081889588319882" stroke-width="3.34243217648px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="26.73945741184 13.36972870592"/><rect class="schematic-box sch-box" x="479.67244164676003" y="83.56080441204" width="60.16377917663999" height="41.78040220600002" stroke-width="3.34243217648px" stroke="rgb(132, 0, 0)" fill="transparent" stroke-dasharray="26.73945741184 13.36972870592"/>
|
|
76
69
|
</g>
|
|
77
70
|
</svg>
|
|
@@ -636,14 +636,7 @@ orientation: x+" data-x="6.747" data-y="-0.48299999999999965" cx="455.4914773170
|
|
|
636
636
|
L 160.93862716514727,626.8733721028755
|
|
637
637
|
L 160.93862716514727,661.0202482483497
|
|
638
638
|
Z
|
|
639
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><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="157.26797257017728" y="659.6988125941606" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(-90 157.26797257017728 659.6988125941606)">XXXXXXX</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="
|
|
640
|
-
M 632.9848080782893,570.3917862985404
|
|
641
|
-
L 636.6554626732593,572.3739397798242
|
|
642
|
-
L 636.6554626732593,606.5208159252985
|
|
643
|
-
L 629.3141534833194,606.5208159252985
|
|
644
|
-
L 629.3141534833194,572.3739397798242
|
|
645
|
-
Z
|
|
646
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" x="632.9848080782893" y="573.6953754340134" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(90 632.9848080782893 573.6953754340134)">XXXXXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="
|
|
639
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><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="157.26797257017728" y="659.6988125941606" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(-90 157.26797257017728 659.6988125941606)">XXXXXXX</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_3__stack1" x="628.5800225643253" y="570.3917862985404" width="8.809571027928087" height="6.607178270945951" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_3__stack1" d="M 628.5800225643253 576.9989645694864 L 637.3895935922534 576.9989645694864" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_3__stack1" d="M 632.9848080782893 576.9989645694864 L 632.9848080782893 570.3917862985404" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_3__stack1" x="632.9848080782893" y="578.8342918669714" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="6.607178270946px">XXXXXXX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_4__stack1" d="
|
|
647
640
|
M 977.8795138216706,531.5929672297076
|
|
648
641
|
L 975.8973603403867,535.2636218246776
|
|
649
642
|
L 941.7504841949125,535.2636218246776
|
|
@@ -713,56 +706,7 @@ orientation: x+" data-x="6.747" data-y="-0.48299999999999965" cx="455.4914773170
|
|
|
713
706
|
L 398.6477716323412,149.84488935282755
|
|
714
707
|
L 386.05987347465737,149.84488935282755
|
|
715
708
|
Z
|
|
716
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><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="387.38130912884657" y="146.17423475785756" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" 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_14__stack1" d="
|
|
717
|
-
M 170.40891602017,531.5929672297074
|
|
718
|
-
L 174.07957061514,533.5751207109912
|
|
719
|
-
L 174.07957061514,546.163018868675
|
|
720
|
-
L 166.73826142520002,546.163018868675
|
|
721
|
-
L 166.73826142520002,533.5751207109912
|
|
722
|
-
Z
|
|
723
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_14__stack1" x="170.40891602017" y="534.8965563651803" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(90 170.40891602017 534.8965563651803)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_15__stack1" d="
|
|
724
|
-
M 334.1201109558319,531.5929672297074
|
|
725
|
-
L 337.7907655508019,533.5751207109912
|
|
726
|
-
L 337.7907655508019,546.163018868675
|
|
727
|
-
L 330.44945636086186,546.163018868675
|
|
728
|
-
L 330.44945636086186,533.5751207109912
|
|
729
|
-
Z
|
|
730
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_15__stack1" x="334.1201109558319" y="534.8965563651803" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(90 334.1201109558319 534.8965563651803)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_16__stack1" d="
|
|
731
|
-
M 450.36974197853186,222.41373069538443
|
|
732
|
-
L 454.0403965735019,224.39588417666823
|
|
733
|
-
L 454.0403965735019,236.98378233435201
|
|
734
|
-
L 446.69908738356185,236.98378233435201
|
|
735
|
-
L 446.69908738356185,224.39588417666823
|
|
736
|
-
Z
|
|
737
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_16__stack1" x="450.36974197853186" y="225.71731983085743" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(90 450.36974197853186 225.71731983085743)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_17__stack1" d="
|
|
738
|
-
M 596.0213163069415,401.229669289348
|
|
739
|
-
L 599.6919709019114,403.2118227706318
|
|
740
|
-
L 599.6919709019114,415.7997209283156
|
|
741
|
-
L 592.3506617119715,415.7997209283156
|
|
742
|
-
L 592.3506617119715,403.2118227706318
|
|
743
|
-
Z
|
|
744
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_17__stack1" x="596.0213163069415" y="404.533258424821" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(90 596.0213163069415 404.533258424821)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_18__stack1" d="
|
|
745
|
-
M 998.985777742748,415.912287669228
|
|
746
|
-
L 1002.656432337718,417.8944411505118
|
|
747
|
-
L 1002.656432337718,430.4823393081956
|
|
748
|
-
L 995.3151231477781,430.4823393081956
|
|
749
|
-
L 995.3151231477781,417.8944411505118
|
|
750
|
-
Z
|
|
751
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_18__stack1" x="998.985777742748" y="419.215876804701" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(90 998.985777742748 419.215876804701)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_19__stack1" d="
|
|
752
|
-
M 1163.733932601489,698.2406858413456
|
|
753
|
-
L 1167.404587196459,700.2228393226294
|
|
754
|
-
L 1167.404587196459,712.8107374803132
|
|
755
|
-
L 1160.0632780065189,712.8107374803132
|
|
756
|
-
L 1160.0632780065189,700.2228393226294
|
|
757
|
-
Z
|
|
758
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_19__stack1" x="1163.733932601489" y="701.5442749768185" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(90 1163.733932601489 701.5442749768185)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_20__stack1" d="
|
|
759
|
-
M 1043.5842310716334,271.58214899500757
|
|
760
|
-
L 1047.2548856666035,273.56430247629135
|
|
761
|
-
L 1047.2548856666035,286.15220063397516
|
|
762
|
-
L 1039.9135764766634,286.15220063397516
|
|
763
|
-
L 1039.9135764766634,273.56430247629135
|
|
764
|
-
Z
|
|
765
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_20__stack1" x="1043.5842310716334" y="274.88573813048055" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" transform="rotate(90 1043.5842310716334 274.88573813048055)">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_21__stack1" d="
|
|
709
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="0.7341309189940001px"/><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="387.38130912884657" y="146.17423475785756" fill="rgb(132, 0, 0)" text-anchor="start" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="6.607178270946px" 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_14__stack1" x="166.00413050620602" y="531.5929672297074" width="8.809571027927973" height="6.607178270945951" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_14__stack1" d="M 166.00413050620602 538.2001455006533 L 174.813701534134 538.2001455006533" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_14__stack1" d="M 170.40891602017 538.2001455006533 L 170.40891602017 531.5929672297074" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_14__stack1" x="170.40891602017" y="540.0354727981384" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="6.607178270946px">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_15__stack1" x="329.7153254418679" y="531.5929672297074" width="8.809571027927973" height="6.607178270945951" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_15__stack1" d="M 329.7153254418679 538.2001455006533 L 338.52489646979586 538.2001455006533" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_15__stack1" d="M 334.1201109558319 538.2001455006533 L 334.1201109558319 531.5929672297074" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_15__stack1" x="334.1201109558319" y="540.0354727981384" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="6.607178270946px">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_16__stack1" x="445.9649564645679" y="222.41373069538443" width="8.809571027927973" height="6.607178270946008" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_16__stack1" d="M 445.9649564645679 229.02090896633044 L 454.77452749249585 229.02090896633044" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_16__stack1" d="M 450.36974197853186 229.02090896633044 L 450.36974197853186 222.41373069538443" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_16__stack1" x="450.36974197853186" y="230.85623626381545" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="6.607178270946px">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_17__stack1" x="591.6165307929774" y="401.229669289348" width="8.809571027928087" height="6.607178270945951" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_17__stack1" d="M 591.6165307929774 407.83684756029396 L 600.4261018209055 407.83684756029396" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_17__stack1" d="M 596.0213163069415 407.83684756029396 L 596.0213163069415 401.229669289348" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_17__stack1" x="596.0213163069415" y="409.672174857779" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="6.607178270946px">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_18__stack1" x="994.580992228784" y="415.912287669228" width="8.809571027928087" height="6.607178270945951" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_18__stack1" d="M 994.580992228784 422.519465940174 L 1003.3905632567121 422.519465940174" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_18__stack1" d="M 998.985777742748 422.519465940174 L 998.985777742748 415.912287669228" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_18__stack1" x="998.985777742748" y="424.354793237659" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="6.607178270946px">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_19__stack1" x="1159.329147087525" y="698.2406858413456" width="8.809571027928087" height="6.607178270945951" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_19__stack1" d="M 1159.329147087525 704.8478641122915 L 1168.138718115453 704.8478641122915" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_19__stack1" d="M 1163.733932601489 704.8478641122915 L 1163.733932601489 698.2406858413456" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_19__stack1" x="1163.733932601489" y="706.6831914097766" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="6.607178270946px">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_20__stack1" x="1039.1794455576694" y="271.5821489950076" width="8.809571027928087" height="6.607178270945951" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_20__stack1" d="M 1039.1794455576694 278.1893272659536 L 1047.9890165855975 278.1893272659536" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_20__stack1" d="M 1043.5842310716334 278.1893272659536 L 1043.5842310716334 271.5821489950076" stroke="rgb(132, 0, 0)" fill="none" stroke-width="0.7341309189940001px" 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_20__stack1" x="1043.5842310716334" y="280.0246545634386" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="6.607178270946px">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_21__stack1" d="
|
|
766
710
|
M 287.86986305921,105.79703421318771
|
|
767
711
|
L 289.85201654049376,102.12637961821771
|
|
768
712
|
L 315.3753014908519,102.12637961821771
|
|
@@ -8,7 +8,7 @@ globalConnNetId: connectivity_net1" data-x="-1.94" data-y="0.6249999999999996" x
|
|
|
8
8
|
globalConnNetId: connectivity_net2" data-x="-1.315" data-y="-0.7999999999999999" x="277.40945888368134" y="359.3694077545803" width="34.35875585854285" height="9.54409884959523" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.020955357142857144"/></g><g><rect data-type="rect" data-label="netId: ALERT
|
|
9
9
|
globalConnNetId: connectivity_net2" data-x="-1.211" data-y="1.549" x="282.37239028547083" y="247.27396676608436" width="34.35875585854285" height="9.54409884959523" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.020955357142857144"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
10
10
|
globalConnNetId: connectivity_net3" data-x="-0.6910000000000002" data-y="-1.5359999999999998" x="312.9135066041756" y="389.2424371538134" width="22.90583723902853" height="20.04260758414995" fill="#00000066" stroke="#000000" stroke-width="0.020955357142857144"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
11
|
-
globalConnNetId: connectivity_net3" data-x="4.25" data-y="
|
|
11
|
+
globalConnNetId: connectivity_net3" data-x="4.25" data-y="-1.285" x="548.7004686834257" y="377.2645930975714" width="22.905837239028642" height="20.04260758414995" fill="#00000066" stroke="#000000" stroke-width="0.020955357142857144"/></g><g><rect data-type="rect" data-label="netId: VDD
|
|
12
12
|
globalConnNetId: connectivity_net4" data-x="4.011" data-y="1.075" x="538.7268853855987" y="269.89348103962504" width="20.04260758414989" height="9.54409884959523" fill="#ef444466" stroke="#ef4444" stroke-width="0.020955357142857144"/></g><g><rect data-type="rect" data-label="netId: VDD
|
|
13
13
|
globalConnNetId: connectivity_net4" data-x="-1.7" data-y="2.71" x="264.7635279079676" y="186.6212185769067" width="22.905837239028585" height="20.04260758414995" fill="#ef444466" stroke="#ef4444" stroke-width="0.020955357142857144"/></g><g><rect data-type="rect" data-label="netId: VDD
|
|
14
14
|
globalConnNetId: connectivity_net4" data-x="4.25" data-y="1.6909999999999998" x="548.7004686834257" y="235.24840221559435" width="22.905837239028642" height="20.042607584149977" fill="#ef444466" stroke="#ef4444" stroke-width="0.020955357142857144"/></g><g><circle data-type="point" data-label="SDA
|
|
@@ -38,7 +38,7 @@ orientation: x-" data-x="-1.7" data-y="0.6249999999999996" cx="276.2164465274819
|
|
|
38
38
|
orientation: x+" data-x="-1.6749999999999998" data-y="-0.7999999999999999" cx="277.40945888368134" cy="364.14145717937794" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
39
39
|
orientation: x-" data-x="-0.8510000000000001" data-y="1.549" cx="316.7311461440137" cy="252.04601619088197" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
40
40
|
orientation: y-" data-x="-0.6910000000000002" data-y="-1.3259999999999998" cx="324.3664252236899" cy="389.2424371538134" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
41
|
-
orientation: y-" data-x="4.25" data-y="
|
|
41
|
+
orientation: y-" data-x="4.25" data-y="-1.075" cx="560.15338730294" cy="377.2645930975714" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
42
42
|
orientation: x+" data-x="3.8" data-y="1.075" cx="538.6791648913508" cy="274.66553046442266" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
43
43
|
orientation: y+" data-x="-1.7" data-y="2.5" cx="276.21644652748193" cy="206.66382616105665" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
44
44
|
orientation: y+" data-x="4.25" data-y="1.48" cx="560.15338730294" cy="255.33873029399234" 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[
|
|
@@ -140,7 +140,7 @@ orientation: y+" data-x="4.25" data-y="1.48" cx="560.15338730294" cy="255.338730
|
|
|
140
140
|
L 550.7114933541291,255.9311962470977
|
|
141
141
|
L 615.9499609069064,255.93119624709772
|
|
142
142
|
Z
|
|
143
|
-
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.876465989054px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="612.5723221266093" y="265.3135261923677" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="16.888193901485998px" transform="">XXXXX</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_6__stack1" x="624.7693510554602" y="535.0555121188802" width="22.51759186864797" height="16.88819390148592" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" d="M 624.7693510554602 551.9437060203661 L 647.2869429241082 551.9437060203661" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.876465989054px" 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_6__stack1" d="M 636.0281469897842 551.9437060203661 L 636.0281469897842 535.0555121188802" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.876465989054px" 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_6__stack1" x="636.0281469897842" y="556.6348709930012" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="16.888193901485998px">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_7__stack1" x="1088.350273651251" y="
|
|
143
|
+
" fill="rgba(255, 255, 255, 0.6)" stroke="rgb(132, 0, 0)" stroke-width="1.876465989054px"/><text class="net-label-text sch-net-label-text" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_5__stack1" x="612.5723221266093" y="265.3135261923677" fill="rgb(132, 0, 0)" text-anchor="end" dominant-baseline="central" font-family="sans-serif" font-variant-numeric="tabular-nums" font-size="16.888193901485998px" transform="">XXXXX</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_6__stack1" x="624.7693510554602" y="535.0555121188802" width="22.51759186864797" height="16.88819390148592" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_6__stack1" d="M 624.7693510554602 551.9437060203661 L 647.2869429241082 551.9437060203661" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.876465989054px" 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_6__stack1" d="M 636.0281469897842 551.9437060203661 L 636.0281469897842 535.0555121188802" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.876465989054px" 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_6__stack1" x="636.0281469897842" y="556.6348709930012" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="16.888193901485998px">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_7__stack1" x="1088.350273651251" y="511.50586395625254" width="22.517591868648196" height="16.888193901485977" fill="transparent"/><path class="sch-net-label-symbol-path" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_7__stack1" d="M 1088.350273651251 528.3940578577385 L 1110.8678655198992 528.3940578577385" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.876465989054px" 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_7__stack1" d="M 1099.609069585575 528.3940578577385 L 1099.609069585575 511.50586395625254" stroke="rgb(132, 0, 0)" fill="none" stroke-width="1.876465989054px" 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_7__stack1" x="1099.609069585575" y="533.0852228303736" fill="rgb(15, 15, 15)" font-family="sans-serif" text-anchor="middle" dominant-baseline="hanging" font-size="16.888193901485998px">XX</text><path class="net-label sch-net-label" data-circuit-json-type="schematic_net_label" data-schematic-net-label-id="schematic_net_label_8__stack1" d="
|
|
144
144
|
M 1057.38858483186,309.7857701329475
|
|
145
145
|
L 1062.455043002306,300.4034401876775
|
|
146
146
|
L 1094.6301798279517,300.4034401876775
|
|
@@ -1567,6 +1567,7 @@
|
|
|
1567
1567
|
},
|
|
1568
1568
|
{
|
|
1569
1569
|
"netId": "NET_GND",
|
|
1570
|
+
"isGround": true,
|
|
1570
1571
|
"netLabelWidth": 0.96,
|
|
1571
1572
|
"pinIds": [
|
|
1572
1573
|
"schematic_port_119",
|
|
@@ -1611,6 +1612,7 @@
|
|
|
1611
1612
|
},
|
|
1612
1613
|
{
|
|
1613
1614
|
"netId": "NET_AGND",
|
|
1615
|
+
"isGround": true,
|
|
1614
1616
|
"netLabelWidth": 0.42,
|
|
1615
1617
|
"netLabelHeight": 1.08,
|
|
1616
1618
|
"pinIds": [
|
|
@@ -14,5 +14,17 @@ test("repro TMP1075 ground label overlap", () => {
|
|
|
14
14
|
|
|
15
15
|
solver.solve()
|
|
16
16
|
|
|
17
|
+
const finalOutput = solver.netLabelToTraceSolver!.getOutput()
|
|
18
|
+
const groundRailLabel = finalOutput.netLabelPlacements.find((label) =>
|
|
19
|
+
label.pinIds.includes("schematic_port_18"),
|
|
20
|
+
)
|
|
21
|
+
const lowerGroundRailTrace = finalOutput.traces.find(
|
|
22
|
+
(trace) =>
|
|
23
|
+
trace.pinIds.includes("schematic_port_7") &&
|
|
24
|
+
trace.pinIds.includes("schematic_port_8"),
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
expect(groundRailLabel?.anchorPoint.y).toBeCloseTo(-1.075)
|
|
28
|
+
expect(lowerGroundRailTrace?.tracePath[1]?.x).toBeCloseTo(4.25)
|
|
17
29
|
expect(solver).toMatchSolverSnapshot(import.meta.path)
|
|
18
30
|
})
|