@tscircuit/schematic-trace-solver 0.0.89 → 0.0.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -0
- package/dist/index.js +94 -7
- package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2.ts +116 -5
- package/lib/solvers/SchematicTracePipelineSolver/correctPinsInsideChip.ts +19 -0
- package/lib/testing/PipelineStageDebugRunner.ts +21 -4
- package/package.json +1 -1
- package/site/bug-reports/bug-report-20260707T230831Z.page.tsx +4 -0
- package/site/bug-reports/bug-report-20260708T053736Z.page.tsx +4 -0
- package/site/bug-reports/bug-report-20260708T055430Z.page.tsx +4 -0
- package/site/bug-reports/bug-report-20260708T095725Z.page.tsx +4 -0
- package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +22 -22
- package/tests/bug-reports/bug-report-20260707T020342Z/__snapshots__/bug-report-20260707T020342Z.snap.svg +20 -22
- package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +3 -3
- package/tests/bug-reports/bug-report-20260707T141421Z/__snapshots__/bug-report-20260707T141421Z.snap.svg +70 -72
- package/tests/bug-reports/bug-report-20260707T230831Z/__snapshots__/bug-report-20260707T230831Z.snap.svg +94 -0
- package/tests/bug-reports/bug-report-20260707T230831Z/bug-report-20260707T230831Z.json +347 -0
- package/tests/bug-reports/bug-report-20260707T230831Z/bug-report-20260707T230831Z.test.ts +12 -0
- package/tests/bug-reports/bug-report-20260708T053736Z/__snapshots__/bug-report-20260708T053736Z.snap.svg +52 -0
- package/tests/bug-reports/bug-report-20260708T053736Z/bug-report-20260708T053736Z.json +59 -0
- package/tests/bug-reports/bug-report-20260708T053736Z/bug-report-20260708T053736Z.test.ts +12 -0
- package/tests/bug-reports/bug-report-20260708T055430Z/__snapshots__/bug-report-20260708T055430Z.snap.svg +88 -0
- package/tests/bug-reports/bug-report-20260708T055430Z/bug-report-20260708T055430Z.json +263 -0
- package/tests/bug-reports/bug-report-20260708T055430Z/bug-report-20260708T055430Z.test.ts +12 -0
- package/tests/bug-reports/bug-report-20260708T095725Z/__snapshots__/bug-report-20260708T095725Z.snap.svg +87 -0
- package/tests/bug-reports/bug-report-20260708T095725Z/bug-report-20260708T095725Z.json +277 -0
- package/tests/bug-reports/bug-report-20260708T095725Z/bug-report-20260708T095725Z.test.ts +12 -0
- package/tests/examples/__snapshots__/example42.snap.svg +1 -1
- package/tests/repros/__snapshots__/small-variant-resistor-facing-direction.snap.svg +86 -0
- package/tests/repros/assets/small-variant-resistor-facing-direction.input.json +297 -0
- package/tests/repros/small-variant-resistor-facing-direction.test.ts +35 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
{
|
|
2
|
+
"chips": [
|
|
3
|
+
{
|
|
4
|
+
"chipId": "schematic_component_0",
|
|
5
|
+
"center": {
|
|
6
|
+
"x": 0,
|
|
7
|
+
"y": 0
|
|
8
|
+
},
|
|
9
|
+
"width": 2.1,
|
|
10
|
+
"height": 1.7999999999999998,
|
|
11
|
+
"pins": [
|
|
12
|
+
{
|
|
13
|
+
"pinId": "U1.1",
|
|
14
|
+
"x": -1.05,
|
|
15
|
+
"y": 0.7
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"pinId": "U1.2",
|
|
19
|
+
"x": -1.05,
|
|
20
|
+
"y": 0.49999999999999994
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"pinId": "U1.3",
|
|
24
|
+
"x": -1.05,
|
|
25
|
+
"y": 0.29999999999999993
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"pinId": "U1.4",
|
|
29
|
+
"x": -1.05,
|
|
30
|
+
"y": 0.09999999999999987
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"pinId": "U1.5",
|
|
34
|
+
"x": -1.05,
|
|
35
|
+
"y": -0.10000000000000009
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"pinId": "U1.6",
|
|
39
|
+
"x": -1.05,
|
|
40
|
+
"y": -0.30000000000000004
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"pinId": "U1.7",
|
|
44
|
+
"x": -1.05,
|
|
45
|
+
"y": -0.5
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"pinId": "U1.8",
|
|
49
|
+
"x": -1.05,
|
|
50
|
+
"y": -0.7
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"pinId": "U1.9",
|
|
54
|
+
"x": 1.05,
|
|
55
|
+
"y": -0.6
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"pinId": "U1.10",
|
|
59
|
+
"x": 1.05,
|
|
60
|
+
"y": -0.39999999999999997
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"pinId": "U1.11",
|
|
64
|
+
"x": 1.05,
|
|
65
|
+
"y": -0.19999999999999996
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"pinId": "U1.12",
|
|
69
|
+
"x": 1.05,
|
|
70
|
+
"y": 1.1102230246251565e-16
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"pinId": "U1.13",
|
|
74
|
+
"x": 1.05,
|
|
75
|
+
"y": 0.20000000000000007
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"pinId": "U1.14",
|
|
79
|
+
"x": 1.05,
|
|
80
|
+
"y": 0.4
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"pinId": "U1.15",
|
|
84
|
+
"x": 1.05,
|
|
85
|
+
"y": 0.6
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"chipId": "schematic_component_1",
|
|
91
|
+
"center": {
|
|
92
|
+
"x": -11.782499999999999,
|
|
93
|
+
"y": -2
|
|
94
|
+
},
|
|
95
|
+
"width": 1.084999999999999,
|
|
96
|
+
"height": 0.6000000000000014,
|
|
97
|
+
"pins": [
|
|
98
|
+
{
|
|
99
|
+
"pinId": "RFSET.1",
|
|
100
|
+
"x": -12,
|
|
101
|
+
"y": -1.6999999999999993
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"pinId": "RFSET.2",
|
|
105
|
+
"x": -12,
|
|
106
|
+
"y": -2.3000000000000007
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"chipId": "schematic_component_2",
|
|
112
|
+
"center": {
|
|
113
|
+
"x": -11.782499999999999,
|
|
114
|
+
"y": -0.18999999999999861
|
|
115
|
+
},
|
|
116
|
+
"width": 1.084999999999999,
|
|
117
|
+
"height": 0.6000000000000014,
|
|
118
|
+
"pins": [
|
|
119
|
+
{
|
|
120
|
+
"pinId": "RTEMP.1",
|
|
121
|
+
"x": -12,
|
|
122
|
+
"y": 0.1100000000000021
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"pinId": "RTEMP.2",
|
|
126
|
+
"x": -12,
|
|
127
|
+
"y": -0.4899999999999993
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"chipId": "schematic_component_3",
|
|
133
|
+
"center": {
|
|
134
|
+
"x": -11.7225,
|
|
135
|
+
"y": 1.6750000000000007
|
|
136
|
+
},
|
|
137
|
+
"width": 1.205,
|
|
138
|
+
"height": 0.6000000000000014,
|
|
139
|
+
"pins": [
|
|
140
|
+
{
|
|
141
|
+
"pinId": "RFAULT.1",
|
|
142
|
+
"x": -12,
|
|
143
|
+
"y": 1.9750000000000014
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"pinId": "RFAULT.2",
|
|
147
|
+
"x": -12,
|
|
148
|
+
"y": 1.375
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"chipId": "schematic_component_4",
|
|
154
|
+
"center": {
|
|
155
|
+
"x": 12,
|
|
156
|
+
"y": -1
|
|
157
|
+
},
|
|
158
|
+
"width": 0.6000000000000014,
|
|
159
|
+
"height": 0.8399999999999999,
|
|
160
|
+
"pins": [
|
|
161
|
+
{
|
|
162
|
+
"pinId": "CCOMP.1",
|
|
163
|
+
"x": 11.7,
|
|
164
|
+
"y": -1
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"pinId": "CCOMP.2",
|
|
168
|
+
"x": 12.3,
|
|
169
|
+
"y": -1
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"chipId": "schematic_component_5",
|
|
175
|
+
"center": {
|
|
176
|
+
"x": 13.517500000000002,
|
|
177
|
+
"y": -1.3000000000000003
|
|
178
|
+
},
|
|
179
|
+
"width": 1.084999999999999,
|
|
180
|
+
"height": 0.6000000000000014,
|
|
181
|
+
"pins": [
|
|
182
|
+
{
|
|
183
|
+
"pinId": "RCOMP.1",
|
|
184
|
+
"x": 13.3,
|
|
185
|
+
"y": -0.9999999999999996
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"pinId": "RCOMP.2",
|
|
189
|
+
"x": 13.3,
|
|
190
|
+
"y": -1.600000000000001
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
"directConnections": [
|
|
196
|
+
{
|
|
197
|
+
"pinIds": [
|
|
198
|
+
"U1.13",
|
|
199
|
+
"RFSET.1"
|
|
200
|
+
],
|
|
201
|
+
"netId": "U1.FSET to RFSET.pin1",
|
|
202
|
+
"netLabelWidth": 2.05
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"pinIds": [
|
|
206
|
+
"U1.14",
|
|
207
|
+
"RTEMP.1"
|
|
208
|
+
],
|
|
209
|
+
"netId": "U1.TEMP to RTEMP.pin1",
|
|
210
|
+
"netLabelWidth": 2.05
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"pinIds": [
|
|
214
|
+
"U1.7",
|
|
215
|
+
"RFAULT.1"
|
|
216
|
+
],
|
|
217
|
+
"netId": "U1.FAULT to RFAULT.pin1",
|
|
218
|
+
"netLabelWidth": 2.24
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"pinIds": [
|
|
222
|
+
"U1.12",
|
|
223
|
+
"CCOMP.1"
|
|
224
|
+
],
|
|
225
|
+
"netId": "U1.COMP to CCOMP.pos",
|
|
226
|
+
"netLabelWidth": 1.96
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"pinIds": [
|
|
230
|
+
"CCOMP.2",
|
|
231
|
+
"RCOMP.1"
|
|
232
|
+
],
|
|
233
|
+
"netId": "CCOMP.neg to RCOMP.pin1"
|
|
234
|
+
}
|
|
235
|
+
],
|
|
236
|
+
"netConnections": [
|
|
237
|
+
{
|
|
238
|
+
"netId": "GND",
|
|
239
|
+
"pinIds": [
|
|
240
|
+
"RFSET.2",
|
|
241
|
+
"RTEMP.2",
|
|
242
|
+
"RFAULT.2",
|
|
243
|
+
"RCOMP.2"
|
|
244
|
+
],
|
|
245
|
+
"netLabelWidth": 0.42,
|
|
246
|
+
"netLabelHeight": 0.48
|
|
247
|
+
}
|
|
248
|
+
],
|
|
249
|
+
"textBoxes": [
|
|
250
|
+
{
|
|
251
|
+
"chipId": "schematic_component_0",
|
|
252
|
+
"center": {
|
|
253
|
+
"x": 0.13,
|
|
254
|
+
"y": -1.0299999999999998
|
|
255
|
+
},
|
|
256
|
+
"width": 1.56,
|
|
257
|
+
"height": 0.18000000000000005,
|
|
258
|
+
"text": "TPS923655DMTR"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"chipId": "schematic_component_0",
|
|
262
|
+
"center": {
|
|
263
|
+
"x": -0.53,
|
|
264
|
+
"y": 1.0150000000000001
|
|
265
|
+
},
|
|
266
|
+
"width": 0.35999999999999993,
|
|
267
|
+
"height": 0.2500000000000002,
|
|
268
|
+
"text": "U1"
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"availableNetLabelOrientations": {
|
|
272
|
+
"GND": [
|
|
273
|
+
"y-"
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
"maxMspPairDistance": 2.4
|
|
277
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { expect, test } from "bun:test"
|
|
2
|
+
import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
|
|
3
|
+
import inputProblem from "./bug-report-20260708T095725Z.json"
|
|
4
|
+
import "tests/fixtures/matcher"
|
|
5
|
+
|
|
6
|
+
test("bug-report-20260708T095725Z", () => {
|
|
7
|
+
const solver = new SchematicTracePipelineSolver(inputProblem as any)
|
|
8
|
+
|
|
9
|
+
solver.solve()
|
|
10
|
+
|
|
11
|
+
expect(solver).toMatchSolverSnapshot(import.meta.path)
|
|
12
|
+
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="2.6,-0.8499999999999999 3.75,-1.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 574.7368421052631,384.0421052631579" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,-0.8499999999999999 3.75,-2.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 574.7368421052631,468.25263157894733" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.75,-1.4 3.75,-2.4" data-type="line" data-label="" points="574.7368421052631,384.0421052631579 574.7368421052631,468.25263157894733" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,0.10000000000000009 2.6500000000000004,-1.4" data-type="line" data-label="" points="477.8947368421052,257.7263157894737 482.1052631578947,384.0421052631579" fill="none" stroke="hsl(273, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,-0.09999999999999987 2.6500000000000004,-2.4" data-type="line" data-label="" points="477.8947368421052,274.5684210526316 482.1052631578947,468.25263157894733" fill="none" stroke="hsl(274, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.75,-2.4 3.95,-2.4 3.95,-1.4 3.75,-1.4" data-type="line" data-label="" points="574.7368421052631,468.25263157894733 591.578947368421,468.25263157894733 591.578947368421,384.0421052631579 574.7368421052631,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,-0.8499999999999999 3.95,-0.8499999999999999 3.95,-1.4 3.75,-1.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 591.578947368421,337.7263157894737 591.578947368421,384.0421052631579 574.7368421052631,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6
|
|
1
|
+
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="2.6,-0.8499999999999999 3.75,-1.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 574.7368421052631,384.0421052631579" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,-0.8499999999999999 3.75,-2.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 574.7368421052631,468.25263157894733" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.75,-1.4 3.75,-2.4" data-type="line" data-label="" points="574.7368421052631,384.0421052631579 574.7368421052631,468.25263157894733" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,0.10000000000000009 2.6500000000000004,-1.4" data-type="line" data-label="" points="477.8947368421052,257.7263157894737 482.1052631578947,384.0421052631579" fill="none" stroke="hsl(273, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="2.6,-0.09999999999999987 2.6500000000000004,-2.4" data-type="line" data-label="" points="477.8947368421052,274.5684210526316 482.1052631578947,468.25263157894733" fill="none" stroke="hsl(274, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.75,-2.4 3.95,-2.4 3.95,-1.4 3.75,-1.4" data-type="line" data-label="" points="574.7368421052631,468.25263157894733 591.578947368421,468.25263157894733 591.578947368421,384.0421052631579 574.7368421052631,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,-0.8499999999999999 3.95,-0.8499999999999999 3.95,-1.4 3.75,-1.4" data-type="line" data-label="" points="477.8947368421052,337.7263157894737 591.578947368421,337.7263157894737 591.578947368421,384.0421052631579 574.7368421052631,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,-0.09999999999999987 2.6400000000000006,-0.09999999999999987 2.6400000000000006,-1.25 2.45,-1.25 2.45,-2.4 2.6500000000000004,-2.4" data-type="line" data-label="" points="477.8947368421052,274.5684210526316 481.2631578947369,274.5684210526316 481.2631578947369,371.41052631578947 465.2631578947368,371.41052631578947 465.2631578947368,468.25263157894733 482.1052631578947,468.25263157894733" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,0.10000000000000009 2.61,0.10000000000000009 2.61,-1.4 2.6500000000000004,-1.4" data-type="line" data-label="" points="477.8947368421052,257.7263157894737 478.7368421052631,257.7263157894737 478.7368421052631,384.0421052631579 482.1052631578947,384.0421052631579" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="2.6,0.8499999999999999 2.701,0.8499999999999999 2.701,1.001" data-type="line" data-label="" points="477.8947368421052,194.5684210526316 486.4,194.5684210526316 486.4,181.8526315789474" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_16" data-x="0" data-y="0" x="40" y="181.93684210526317" width="437.8947368421052" height="168.42105263157896" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="schematic_component_17" data-x="3.2" data-y="-1.4" x="482.10526315789474" y="351.24586526315795" width="92.63157894736844" height="65.59247999999991" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="schematic_component_18" data-x="3.2" data-y="-2.4" x="482.10526315789474" y="435.45639157894743" width="92.63157894736844" height="65.59247999999985" fill="hsl(320, 100%, 50%, 0.8)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="netId: VBUS
|
|
2
2
|
globalConnNetId: connectivity_net3" data-x="2.701" data-y="1.301" x="477.978947368421" y="131.3263157894737" width="16.84210526315792" height="50.5263157894737" fill="#ef444466" stroke="#ef4444" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="netId: D_PLUS
|
|
3
3
|
globalConnNetId: connectivity_net2" data-x="3.021" data-y="0.6499999999999999" x="477.978947368421" y="202.98947368421057" width="70.73684210526312" height="16.84210526315789" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="netId: D_MINUS
|
|
4
4
|
globalConnNetId: connectivity_net1" data-x="3.081" data-y="0.44999999999999996" x="477.97894736842096" y="219.83157894736843" width="80.8421052631578" height="16.84210526315789" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.011875000000000002"/></g><g><rect data-type="rect" data-label="netId: CC1
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="8.9,15.1 8.9,14.7" data-type="line" data-label="" points="100.44213263979202,152.50975292587782 100.44213263979202,181.63849154746435" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,15.1 11.1,13.3" data-type="line" data-label="" points="100.44213263979202,152.50975292587782 260.6501950585176,283.5890767230169" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 11.1,13.3" data-type="line" data-label="" points="100.44213263979202,181.63849154746435 260.6501950585176,283.5890767230169" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 8.9,14.5" data-type="line" data-label="" points="100.44213263979202,167.07412223667097 100.44213263979202,196.2028608582575" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 11.1,12.7" data-type="line" data-label="" points="100.44213263979202,167.07412223667097 260.6501950585176,327.2821846553967" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.9 13.16,10" data-type="line" data-label="" points="100.44213263979202,167.07412223667097 410.663198959688,523.9011703511054" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 11.1,12.7" data-type="line" data-label="" points="100.44213263979202,196.2028608582575 260.6501950585176,327.2821846553967" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.5 13.16,10" data-type="line" data-label="" points="100.44213263979202,196.2028608582575 410.663198959688,523.9011703511054" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,12.7 13.16,10" data-type="line" data-label="" points="260.6501950585176,327.2821846553967 410.663198959688,523.9011703511054" fill="none" stroke="hsl(23, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="11.1,15.5 14.84,10" data-type="line" data-label="" points="260.6501950585176,123.38101430429128 533.0039011703514,523.9011703511054" fill="none" stroke="hsl(50, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="8.9,14.7 8.600000000000001,14.7 8.600000000000001,15.1 8.9,15.1" data-type="line" data-label="" points="100.44213263979202,181.63849154746435 78.59557867360218,181.63849154746435 78.59557867360218,152.50975292587782 100.44213263979202,152.50975292587782" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.9,14.5 8.8,14.5 8.8,14.9 8.9,14.9" data-type="line" data-label="" points="100.44213263979202,196.2028608582575 93.15994798439544,196.2028608582575 93.15994798439544,167.07412223667097 100.44213263979202,167.07412223667097" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,12.7 12.129999999999999,12.7 12.129999999999999,10 13.16,10" data-type="line" data-label="" points="260.6501950585176,327.2821846553967 335.6566970091028,327.2821846553967 335.6566970091028,523.9011703511054 410.663198959688,523.9011703511054" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,15.5 15.04,15.5 15.04,10 14.84,10" data-type="line" data-label="" points="260.6501950585176,123.38101430429128 547.5682704811445,123.38101430429128 547.5682704811445,523.9011703511054 533.0039011703514,523.9011703511054" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="8.600000000000001,14.7 8.31,14.7 8.31,14.699" data-type="line" data-label="" points="78.59557867360218,181.63849154746435 57.477243172951944,181.63849154746435 57.477243172951944,181.71131339401813" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="11.1,13.3 12.341,13.3 12.341,13.249" data-type="line" data-label="" points="260.6501950585176,283.5890767230169 351.0221066319897,283.5890767230169 351.0221066319897,287.3029908972692" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="10" data-y="14" x="100.44213263979202" y="108.81664499349813" width="160.2080624187256" height="247.59427828348498" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="14" data-y="10" x="410.6631989596879" y="499.1417425227569" width="122.34070221066338" height="49.51885565669704" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="ATMEGA328P_AU" data-x="10.080000000000002" data-y="12.17" x="129.57087126137844" y="359.3237971391418" width="113.60208062418747" height="13.10793237971393" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="U_MCU" data-x="9.600000000000001" data-y="15.815" x="125.2015604681406" y="91.33940182054607" width="52.431729518855605" height="18.20546163849167" fill="rgba(160, 0, 220, 0.14)" stroke="black" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
2
|
+
globalConnNetId: connectivity_net0" data-x="8.31" data-y="14.488999999999999" x="40" y="181.71131339401813" width="34.95448634590389" height="30.585175552665987" fill="#00000066" stroke="#000000" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="netId: GND
|
|
3
|
+
globalConnNetId: connectivity_net0" data-x="12.341" data-y="13.039" x="333.5448634590378" y="287.30299089726924" width="34.954486345903774" height="30.585175552665874" fill="#00000066" stroke="#000000" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="netId: VCC_3V3
|
|
4
|
+
globalConnNetId: connectivity_net1" data-x="11.614999999999998" data-y="12.91" x="263.1989596879063" y="296.69700910273076" width="69.90897269180766" height="30.585175552665874" fill="#ef444466" stroke="#ef4444" stroke-width="0.013732142857142852"/></g><g><rect data-type="rect" data-label="netId: FAULT
|
|
5
|
+
globalConnNetId: connectivity_net2" data-x="15.399999999999999" data-y="15.5" x="547.5682704811444" y="116.09882964889471" width="52.43172951885549" height="14.564369310793154" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.013732142857142852"/></g><g><circle data-type="point" data-label="U_MCU.1
|
|
6
|
+
x-" data-x="8.9" data-y="15.5" cx="100.44213263979202" cy="123.38101430429128" r="3" fill="hsl(144, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.2
|
|
7
|
+
x-" data-x="8.9" data-y="15.3" cx="100.44213263979202" cy="137.94538361508444" r="3" fill="hsl(145, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.3
|
|
8
|
+
x-" data-x="8.9" data-y="15.1" cx="100.44213263979202" cy="152.50975292587782" r="3" fill="hsl(146, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.4
|
|
9
|
+
x-" data-x="8.9" data-y="14.9" cx="100.44213263979202" cy="167.07412223667097" r="3" fill="hsl(147, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.5
|
|
10
|
+
x-" data-x="8.9" data-y="14.7" cx="100.44213263979202" cy="181.63849154746435" r="3" fill="hsl(148, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.6
|
|
11
|
+
x-" data-x="8.9" data-y="14.5" cx="100.44213263979202" cy="196.2028608582575" r="3" fill="hsl(149, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.7
|
|
12
|
+
x-" data-x="8.9" data-y="14.3" cx="100.44213263979202" cy="210.76723016905066" r="3" fill="hsl(150, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.8
|
|
13
|
+
x-" data-x="8.9" data-y="14.1" cx="100.44213263979202" cy="225.33159947984404" r="3" fill="hsl(151, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.9
|
|
14
|
+
x-" data-x="8.9" data-y="13.9" cx="100.44213263979202" cy="239.8959687906372" r="3" fill="hsl(152, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.10
|
|
15
|
+
x-" data-x="8.9" data-y="13.700000000000001" cx="100.44213263979202" cy="254.46033810143035" r="3" fill="hsl(192, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.11
|
|
16
|
+
x-" data-x="8.9" data-y="13.5" cx="100.44213263979202" cy="269.02470741222373" r="3" fill="hsl(193, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.12
|
|
17
|
+
x-" data-x="8.9" data-y="13.3" cx="100.44213263979202" cy="283.5890767230169" r="3" fill="hsl(194, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.13
|
|
18
|
+
x-" data-x="8.9" data-y="13.1" cx="100.44213263979202" cy="298.15344603381016" r="3" fill="hsl(195, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.14
|
|
19
|
+
x-" data-x="8.9" data-y="12.9" cx="100.44213263979202" cy="312.7178153446034" r="3" fill="hsl(196, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.15
|
|
20
|
+
x-" data-x="8.9" data-y="12.7" cx="100.44213263979202" cy="327.2821846553967" r="3" fill="hsl(197, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.16
|
|
21
|
+
x-" data-x="8.9" data-y="12.5" cx="100.44213263979202" cy="341.84655396618996" r="3" fill="hsl(198, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.17
|
|
22
|
+
x+" data-x="11.1" data-y="12.5" cx="260.6501950585176" cy="341.84655396618996" r="3" fill="hsl(199, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.18
|
|
23
|
+
x+" data-x="11.1" data-y="12.7" cx="260.6501950585176" cy="327.2821846553967" r="3" fill="hsl(200, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.19
|
|
24
|
+
x+" data-x="11.1" data-y="12.9" cx="260.6501950585176" cy="312.7178153446034" r="3" fill="hsl(201, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.20
|
|
25
|
+
x+" data-x="11.1" data-y="13.1" cx="260.6501950585176" cy="298.15344603381016" r="3" fill="hsl(223, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.21
|
|
26
|
+
x+" data-x="11.1" data-y="13.3" cx="260.6501950585176" cy="283.5890767230169" r="3" fill="hsl(224, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.22
|
|
27
|
+
x+" data-x="11.1" data-y="13.5" cx="260.6501950585176" cy="269.02470741222373" r="3" fill="hsl(225, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.23
|
|
28
|
+
x+" data-x="11.1" data-y="13.7" cx="260.6501950585176" cy="254.46033810143047" r="3" fill="hsl(226, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.24
|
|
29
|
+
x+" data-x="11.1" data-y="13.9" cx="260.6501950585176" cy="239.8959687906372" r="3" fill="hsl(227, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.25
|
|
30
|
+
x+" data-x="11.1" data-y="14.1" cx="260.6501950585176" cy="225.33159947984404" r="3" fill="hsl(228, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.26
|
|
31
|
+
x+" data-x="11.1" data-y="14.299999999999999" cx="260.6501950585176" cy="210.7672301690509" r="3" fill="hsl(229, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.27
|
|
32
|
+
x+" data-x="11.1" data-y="14.5" cx="260.6501950585176" cy="196.2028608582575" r="3" fill="hsl(230, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.28
|
|
33
|
+
x+" data-x="11.1" data-y="14.7" cx="260.6501950585176" cy="181.63849154746435" r="3" fill="hsl(231, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.29
|
|
34
|
+
x+" data-x="11.1" data-y="14.9" cx="260.6501950585176" cy="167.07412223667097" r="3" fill="hsl(232, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.30
|
|
35
|
+
x+" data-x="11.1" data-y="15.1" cx="260.6501950585176" cy="152.50975292587782" r="3" fill="hsl(254, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.31
|
|
36
|
+
x+" data-x="11.1" data-y="15.3" cx="260.6501950585176" cy="137.94538361508444" r="3" fill="hsl(255, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="U_MCU.32
|
|
37
|
+
x+" data-x="11.1" data-y="15.5" cx="260.6501950585176" cy="123.38101430429128" r="3" fill="hsl(256, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R_FAULT_PULLUP.1
|
|
38
|
+
x-" data-x="13.16" data-y="10" cx="410.663198959688" cy="523.9011703511054" r="3" fill="hsl(344, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="R_FAULT_PULLUP.2
|
|
39
|
+
x+" data-x="14.84" data-y="10" cx="533.0039011703514" cy="523.9011703511054" r="3" fill="hsl(344, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
40
|
+
orientation: y-" data-x="8.31" data-y="14.699" cx="57.477243172951944" cy="181.71131339401813" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
41
|
+
orientation: y-" data-x="12.341" data-y="13.249" cx="351.0221066319897" cy="287.3029908972692" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
42
|
+
orientation: y+" data-x="11.614999999999998" data-y="12.7" cx="298.15344603381016" cy="327.2821846553967" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
|
|
43
|
+
orientation: x+" data-x="15.04" data-y="15.5" cx="547.5682704811445" cy="123.38101430429128" 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[
|
|
44
|
+
document.currentScript.parentElement.addEventListener('mousemove', (e) => {
|
|
45
|
+
const svg = e.currentTarget;
|
|
46
|
+
const rect = svg.getBoundingClientRect();
|
|
47
|
+
const x = e.clientX - rect.left;
|
|
48
|
+
const y = e.clientY - rect.top;
|
|
49
|
+
const crosshair = svg.getElementById('crosshair');
|
|
50
|
+
const h = svg.getElementById('crosshair-h');
|
|
51
|
+
const v = svg.getElementById('crosshair-v');
|
|
52
|
+
const coords = svg.getElementById('coordinates');
|
|
53
|
+
|
|
54
|
+
crosshair.style.display = 'block';
|
|
55
|
+
h.setAttribute('x1', '0');
|
|
56
|
+
h.setAttribute('x2', '640');
|
|
57
|
+
h.setAttribute('y1', y);
|
|
58
|
+
h.setAttribute('y2', y);
|
|
59
|
+
v.setAttribute('x1', x);
|
|
60
|
+
v.setAttribute('x2', x);
|
|
61
|
+
v.setAttribute('y1', '0');
|
|
62
|
+
v.setAttribute('y2', '640');
|
|
63
|
+
|
|
64
|
+
// Calculate real coordinates using inverse transformation
|
|
65
|
+
const matrix = {"a":72.82184655396621,"c":0,"e":-547.6723016905073,"b":0,"d":-72.82184655396621,"f":1252.1196358907675};
|
|
66
|
+
// Manually invert and apply the affine transform
|
|
67
|
+
// Since we only use translate and scale, we can directly compute:
|
|
68
|
+
// x' = (x - tx) / sx
|
|
69
|
+
// y' = (y - ty) / sy
|
|
70
|
+
const sx = matrix.a;
|
|
71
|
+
const sy = matrix.d;
|
|
72
|
+
const tx = matrix.e;
|
|
73
|
+
const ty = matrix.f;
|
|
74
|
+
const realPoint = {
|
|
75
|
+
x: (x - tx) / sx,
|
|
76
|
+
y: (y - ty) / sy // Flip y back since we used negative scale
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
|
|
80
|
+
coords.setAttribute('x', (x + 5).toString());
|
|
81
|
+
coords.setAttribute('y', (y - 5).toString());
|
|
82
|
+
});
|
|
83
|
+
document.currentScript.parentElement.addEventListener('mouseleave', () => {
|
|
84
|
+
document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
|
|
85
|
+
});
|
|
86
|
+
]]></script></svg>
|