@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 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
@@ -5,7 +5,7 @@
5
5
  "url": "https://github.com/tscircuit/schematic-trace-solver.git"
6
6
  },
7
7
  "main": "dist/index.js",
8
- "version": "0.0.172",
8
+ "version": "0.0.173",
9
9
  "type": "module",
10
10
  "scripts": {
11
11
  "start": "cosmos",
@@ -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="0.21500000000000005" x="548.7004686834257" y="305.68385172560716" width="22.905837239028642" height="20.042607584150005" fill="#00000066" stroke="#000000" stroke-width="0.020955357142857144"/></g><g><rect data-type="rect" data-label="netId: VDD
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="0.42500000000000004" cx="560.15338730294" cy="305.68385172560716" 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="-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="370.77091477720245" width="22.517591868648196" height="16.888193901486034" 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 387.6591086786885 L 1110.8678655198992 387.6591086786885" 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 387.6591086786885 L 1099.609069585575 370.77091477720245" 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="392.35027365132345" 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="
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": [
@@ -28,6 +28,7 @@ const inputProblem: InputProblem = {
28
28
  netConnections: [
29
29
  {
30
30
  netId: "NET_AGND",
31
+ isGround: true,
31
32
  pinIds: ["J4.3", "J4.4", "J4.5", "J4.6"],
32
33
  netLabelWidth: 0.42,
33
34
  netLabelHeight: 1.08,
@@ -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
  })