@tscircuit/schematic-trace-solver 0.0.48 → 0.0.50

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.
Files changed (168) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +128 -1
  3. package/dist/index.js +1450 -42
  4. package/lib/solvers/AvailableNetOrientationSolver/AvailableNetOrientationSolver.ts +682 -0
  5. package/lib/solvers/AvailableNetOrientationSolver/constants.ts +6 -0
  6. package/lib/solvers/AvailableNetOrientationSolver/geometry.ts +192 -0
  7. package/lib/solvers/AvailableNetOrientationSolver/traces.ts +43 -0
  8. package/lib/solvers/AvailableNetOrientationSolver/types.ts +44 -0
  9. package/lib/solvers/AvailableNetOrientationSolver/visualize.ts +123 -0
  10. package/lib/solvers/Example28Solver/Example28Solver.ts +182 -0
  11. package/lib/solvers/Example28Solver/geometry.ts +246 -0
  12. package/lib/solvers/Example28Solver/labelMovement.ts +82 -0
  13. package/lib/solvers/Example28Solver/reroute.ts +368 -0
  14. package/lib/solvers/Example28Solver/types.ts +47 -0
  15. package/lib/solvers/Example28Solver/visualize.ts +96 -0
  16. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +30 -0
  17. package/package.json +1 -1
  18. package/site/SchematicTraceSingleLineSolver2/SchematicTraceSingleLineSolver2_01-example17-d1_1-u1_1.page.tsx +2 -0
  19. package/site/TraceCleanupSolver/TraceCleanupSolver.page.tsx +23 -0
  20. package/site/TraceLabelOverlapAvoidanceSolver/MergedNetLabelObstacles.page.tsx +18 -0
  21. package/site/TraceLabelOverlapAvoidanceSolver/OverlapAvoidanceStepSolver.page.tsx +24 -0
  22. package/site/TraceLabelOverlapAvoidanceSolver/SingleOverlapSolver.page.tsx +10 -0
  23. package/site/TraceLabelOverlapAvoidanceSolver/TraceLabelOverlapAvoidanceSolver.page.tsx +146 -0
  24. package/site/TraceLabelOverlapAvoidanceSolver/renderComparisonView01.page.tsx +32 -0
  25. package/site/TraceLabelOverlapAvoidanceSolver/renderComparisonView02.page.tsx +32 -0
  26. package/site/TraceLabelOverlapAvoidanceSolver/renderComparisonView03.page.tsx +35 -0
  27. package/site/examples/example01.page.tsx +6 -0
  28. package/site/examples/example02.page.tsx +4 -180
  29. package/site/examples/example03.page.tsx +3 -212
  30. package/site/examples/example04.page.tsx +6 -0
  31. package/site/examples/example05.page.tsx +3 -179
  32. package/site/examples/example06.page.tsx +3 -57
  33. package/site/examples/example07.page.tsx +3 -132
  34. package/site/examples/example08.page.tsx +3 -91
  35. package/site/examples/example09.page.tsx +3 -414
  36. package/site/examples/example10.page.tsx +3 -75
  37. package/site/examples/example11.page.tsx +3 -116
  38. package/site/examples/example12.page.tsx +3 -94
  39. package/site/examples/example13.page.tsx +3 -216
  40. package/site/examples/example14.page.tsx +3 -207
  41. package/site/examples/example15.page.tsx +6 -0
  42. package/site/examples/example16.page.tsx +6 -0
  43. package/site/examples/example17.page.tsx +6 -0
  44. package/site/examples/example18.page.tsx +3 -178
  45. package/site/examples/example19.page.tsx +3 -166
  46. package/site/examples/example20.page.tsx +3 -100
  47. package/site/examples/example21.page.tsx +3 -174
  48. package/site/examples/example22.page.tsx +3 -105
  49. package/site/examples/example23.page.tsx +3 -134
  50. package/site/examples/example24.page.tsx +3 -125
  51. package/site/examples/example25.page.tsx +2 -0
  52. package/site/examples/example26.page.tsx +2 -0
  53. package/site/examples/example27.page.tsx +2 -0
  54. package/site/examples/example28.page.tsx +3 -58
  55. package/site/examples/example29.page.tsx +6 -0
  56. package/site/examples/example30.page.tsx +6 -0
  57. package/site/examples/example31.page.tsx +4 -0
  58. package/tests/assets/example01.json +109 -0
  59. package/tests/assets/example02.json +178 -0
  60. package/tests/assets/example03.json +210 -0
  61. package/tests/assets/example04.json +41 -0
  62. package/tests/assets/example05.json +175 -0
  63. package/tests/assets/example06.json +55 -0
  64. package/tests/assets/example07.json +130 -0
  65. package/tests/assets/example08.json +89 -0
  66. package/tests/assets/example09.json +412 -0
  67. package/tests/assets/example10.json +73 -0
  68. package/tests/assets/example11.json +114 -0
  69. package/tests/assets/example12.json +92 -0
  70. package/tests/assets/example13.json +214 -0
  71. package/tests/assets/example14.json +205 -0
  72. package/tests/assets/example15.json +618 -0
  73. package/tests/assets/example16.json +102 -0
  74. package/tests/assets/example17.json +160 -0
  75. package/tests/assets/example18.json +176 -0
  76. package/tests/assets/example19.json +164 -0
  77. package/tests/assets/example20.json +98 -0
  78. package/tests/assets/example21.json +172 -0
  79. package/tests/assets/example22.json +103 -0
  80. package/tests/assets/example23.json +132 -0
  81. package/tests/assets/example24.json +123 -0
  82. package/tests/assets/example25.json +146 -33
  83. package/tests/assets/example26.json +51 -1134
  84. package/tests/assets/example27.json +151 -91
  85. package/tests/assets/example28.json +56 -0
  86. package/tests/assets/example29.json +1206 -0
  87. package/tests/assets/example30.json +168 -0
  88. package/tests/assets/example31.json +46 -0
  89. package/tests/examples/__snapshots__/example01.snap.svg +12 -6
  90. package/tests/examples/__snapshots__/example02.snap.svg +16 -8
  91. package/tests/examples/__snapshots__/example03.snap.svg +36 -18
  92. package/tests/examples/__snapshots__/example04.snap.svg +8 -4
  93. package/tests/examples/__snapshots__/example05.snap.svg +4 -2
  94. package/tests/examples/__snapshots__/example06.snap.svg +4 -2
  95. package/tests/examples/__snapshots__/example07.snap.svg +20 -10
  96. package/tests/examples/__snapshots__/example08.snap.svg +16 -8
  97. package/tests/examples/__snapshots__/example09.snap.svg +80 -40
  98. package/tests/examples/__snapshots__/example10.snap.svg +16 -8
  99. package/tests/examples/__snapshots__/example11.snap.svg +24 -12
  100. package/tests/examples/__snapshots__/example12.snap.svg +41 -30
  101. package/tests/examples/__snapshots__/example13.snap.svg +38 -16
  102. package/tests/examples/__snapshots__/example14.snap.svg +121 -48
  103. package/tests/examples/__snapshots__/example15.snap.svg +36 -18
  104. package/tests/examples/__snapshots__/example16.snap.svg +41 -27
  105. package/tests/examples/__snapshots__/example17.snap.svg +16 -8
  106. package/tests/examples/__snapshots__/example18.snap.svg +20 -10
  107. package/tests/examples/__snapshots__/example19.snap.svg +16 -8
  108. package/tests/examples/__snapshots__/example20.snap.svg +45 -131
  109. package/tests/examples/__snapshots__/example21.snap.svg +93 -65
  110. package/tests/examples/__snapshots__/example22.snap.svg +43 -23
  111. package/tests/examples/__snapshots__/example23.snap.svg +62 -26
  112. package/tests/examples/__snapshots__/example24.snap.svg +50 -28
  113. package/tests/examples/__snapshots__/example25.snap.svg +175 -49
  114. package/tests/examples/__snapshots__/example26.snap.svg +16 -8
  115. package/tests/examples/__snapshots__/example27.snap.svg +24 -12
  116. package/tests/examples/__snapshots__/example28.snap.svg +24 -18
  117. package/tests/examples/__snapshots__/example29.snap.svg +184 -92
  118. package/tests/examples/__snapshots__/example30.snap.svg +48 -24
  119. package/tests/examples/__snapshots__/example31.snap.svg +88 -0
  120. package/tests/examples/example01.test.ts +2 -2
  121. package/tests/examples/example02.test.ts +2 -2
  122. package/tests/examples/example03.test.ts +2 -2
  123. package/tests/examples/example04.test.ts +2 -2
  124. package/tests/examples/example05.test.ts +2 -2
  125. package/tests/examples/example06.test.ts +2 -2
  126. package/tests/examples/example07.test.ts +2 -2
  127. package/tests/examples/example08.test.ts +2 -2
  128. package/tests/examples/example09.test.ts +2 -2
  129. package/tests/examples/example10.test.ts +2 -2
  130. package/tests/examples/{example11.test.tsx → example11.test.ts} +2 -2
  131. package/tests/examples/{example12.test.tsx → example12.test.ts} +2 -2
  132. package/tests/examples/{example13.test.tsx → example13.test.ts} +2 -2
  133. package/tests/examples/example14.test.ts +12 -0
  134. package/tests/examples/example15.test.ts +12 -0
  135. package/tests/examples/example16.test.ts +12 -0
  136. package/tests/examples/example17.test.ts +12 -0
  137. package/tests/examples/example18.test.ts +12 -0
  138. package/tests/examples/example19.test.ts +12 -0
  139. package/tests/examples/example20.test.ts +12 -0
  140. package/tests/examples/example21.test.ts +12 -0
  141. package/tests/examples/example22.test.ts +12 -0
  142. package/tests/examples/example23.test.ts +12 -0
  143. package/tests/examples/example24.test.ts +12 -0
  144. package/tests/examples/example25.test.ts +12 -0
  145. package/tests/examples/example26.test.ts +12 -0
  146. package/tests/examples/example27.test.ts +3 -232
  147. package/tests/examples/example28.test.ts +2 -2
  148. package/tests/examples/example29.test.ts +1 -2
  149. package/tests/examples/example30.test.ts +2 -2
  150. package/tests/examples/example31.test.ts +12 -0
  151. package/site/examples/example01-basic.page.tsx +0 -105
  152. package/site/examples/example04-single-symbol.page.tsx +0 -46
  153. package/site/examples/example15-rp2040-caps.page.tsx +0 -623
  154. package/site/examples/example16-core-repro51.page.tsx +0 -107
  155. package/site/examples/example17-straight-line-trace.page.tsx +0 -165
  156. package/tests/examples/example14.test.tsx +0 -11
  157. package/tests/examples/example15.test.tsx +0 -629
  158. package/tests/examples/example16.test.tsx +0 -113
  159. package/tests/examples/example17.test.tsx +0 -171
  160. package/tests/examples/example18.test.tsx +0 -187
  161. package/tests/examples/example19.test.tsx +0 -175
  162. package/tests/examples/example20.test.tsx +0 -190
  163. package/tests/examples/example21.test.tsx +0 -183
  164. package/tests/examples/example22.test.tsx +0 -109
  165. package/tests/examples/example23.test.tsx +0 -109
  166. package/tests/examples/example24.test.tsx +0 -114
  167. package/tests/examples/example25.test.tsx +0 -143
  168. package/tests/examples/example26.test.tsx +0 -134
@@ -1,171 +0,0 @@
1
- import { expect } from "bun:test"
2
- import { test } from "bun:test"
3
- import { SchematicTracePipelineSolver, type InputProblem } from "lib/index"
4
- import "tests/fixtures/matcher"
5
-
6
- const inputProblem: InputProblem = {
7
- chips: [
8
- {
9
- chipId: "schematic_component_0",
10
- center: {
11
- x: 0,
12
- y: 0,
13
- },
14
- width: 2.3,
15
- height: 1,
16
- pins: [
17
- {
18
- pinId: "U1.1",
19
- x: -1.15,
20
- y: 0.30000000000000004,
21
- },
22
- {
23
- pinId: "U1.2",
24
- x: -1.15,
25
- y: 0.10000000000000003,
26
- },
27
- {
28
- pinId: "U1.3",
29
- x: -1.15,
30
- y: -0.09999999999999998,
31
- },
32
- {
33
- pinId: "U1.4",
34
- x: -1.15,
35
- y: -0.30000000000000004,
36
- },
37
- {
38
- pinId: "U1.5",
39
- x: 1.15,
40
- y: -0.30000000000000004,
41
- },
42
- {
43
- pinId: "U1.6",
44
- x: 1.15,
45
- y: -0.10000000000000003,
46
- },
47
- {
48
- pinId: "U1.7",
49
- x: 1.15,
50
- y: 0.09999999999999998,
51
- },
52
- {
53
- pinId: "U1.8",
54
- x: 1.15,
55
- y: 0.30000000000000004,
56
- },
57
- ],
58
- },
59
- {
60
- chipId: "schematic_component_1",
61
- center: {
62
- x: -1.1500000000000004,
63
- y: 1.6700000000000002,
64
- },
65
- width: 1.04,
66
- height: 1.0400000000000005,
67
- pins: [
68
- {
69
- pinId: "D1.1",
70
- x: -1.1500000000000004,
71
- y: 1.15,
72
- },
73
- {
74
- pinId: "D1.2",
75
- x: -1.1500000000000004,
76
- y: 2.1900000000000004,
77
- },
78
- ],
79
- },
80
- {
81
- chipId: "schematic_component_2",
82
- center: {
83
- x: -2.37,
84
- y: 0.10000000000000009,
85
- },
86
- width: 1.04,
87
- height: 0.54,
88
- pins: [
89
- {
90
- pinId: "D2.1",
91
- x: -1.85,
92
- y: 0.10000000000000002,
93
- },
94
- {
95
- pinId: "D2.2",
96
- x: -2.89,
97
- y: 0.10000000000000016,
98
- },
99
- ],
100
- },
101
- {
102
- chipId: "schematic_component_3",
103
- center: {
104
- x: 2.4,
105
- y: -0.3000000000000007,
106
- },
107
- width: 1.1000000000000005,
108
- height: 0.84,
109
- pins: [
110
- {
111
- pinId: "C1.1",
112
- x: 1.8499999999999996,
113
- y: -0.3000000000000007,
114
- },
115
- {
116
- pinId: "C1.2",
117
- x: 2.95,
118
- y: -0.3000000000000007,
119
- },
120
- ],
121
- },
122
- {
123
- chipId: "schematic_component_4",
124
- center: {
125
- x: 4.2,
126
- y: -0.3000000000000007,
127
- },
128
- width: 1.0999999999999996,
129
- height: 0.84,
130
- pins: [
131
- {
132
- pinId: "C2.1",
133
- x: 3.6500000000000004,
134
- y: -0.3000000000000007,
135
- },
136
- {
137
- pinId: "C2.2",
138
- x: 4.75,
139
- y: -0.3000000000000007,
140
- },
141
- ],
142
- },
143
- ],
144
- directConnections: [
145
- {
146
- pinIds: ["U1.5", "C1.1"],
147
- netId: ".U1 .VCC to .C1 .pin1",
148
- },
149
- {
150
- pinIds: ["C1.2", "C2.1"],
151
- netId: ".C1 .pin2 to .C2 .pin1",
152
- },
153
- {
154
- pinIds: ["U1.1", "D1.1"],
155
- netId: ".U1 .OUT1 to .D1 .pin1",
156
- },
157
- {
158
- pinIds: ["U1.2", "D2.1"],
159
- netId: ".U1 .OUT2 to .D2 .pin1",
160
- },
161
- ],
162
- netConnections: [],
163
- availableNetLabelOrientations: {},
164
- maxMspPairDistance: 2.4,
165
- }
166
-
167
- test("example17", () => {
168
- const solver = new SchematicTracePipelineSolver(inputProblem)
169
- solver.solve()
170
- expect(solver).toMatchSolverSnapshot(import.meta.path)
171
- })
@@ -1,187 +0,0 @@
1
- import { expect } from "bun:test"
2
- import { test } from "bun:test"
3
- import { SchematicTracePipelineSolver, type InputProblem } from "lib/index"
4
- import "tests/fixtures/matcher"
5
-
6
- const inputProblem = {
7
- chips: [
8
- {
9
- chipId: "schematic_component_0",
10
- center: {
11
- x: 0,
12
- y: 0,
13
- },
14
- width: 2,
15
- height: 1.4,
16
- pins: [
17
- {
18
- pinId: "U3.8",
19
- x: -1.4,
20
- y: 0.42500000000000004,
21
- },
22
- {
23
- pinId: "U3.4",
24
- x: -1.4,
25
- y: -0.42500000000000004,
26
- },
27
- {
28
- pinId: "U3.1",
29
- x: 1.4,
30
- y: 0.5,
31
- },
32
- {
33
- pinId: "U3.6",
34
- x: 1.4,
35
- y: 0.30000000000000004,
36
- },
37
- {
38
- pinId: "U3.5",
39
- x: 1.4,
40
- y: 0.10000000000000009,
41
- },
42
- {
43
- pinId: "U3.2",
44
- x: 1.4,
45
- y: -0.09999999999999998,
46
- },
47
- {
48
- pinId: "U3.3",
49
- x: 1.4,
50
- y: -0.3,
51
- },
52
- {
53
- pinId: "U3.7",
54
- x: 1.4,
55
- y: -0.5,
56
- },
57
- ],
58
- },
59
- {
60
- chipId: "schematic_component_1",
61
- center: {
62
- x: -2.3145833,
63
- y: 0,
64
- },
65
- width: 0.5291665999999999,
66
- height: 1.0583333000000001,
67
- pins: [
68
- {
69
- pinId: "C20.1",
70
- x: -2.3148566499999994,
71
- y: 0.5512093000000002,
72
- },
73
- {
74
- pinId: "C20.2",
75
- x: -2.31430995,
76
- y: -0.5512093000000002,
77
- },
78
- ],
79
- },
80
- {
81
- chipId: "schematic_component_2",
82
- center: {
83
- x: 1.7577928249999983,
84
- y: 1.7512907000000002,
85
- },
86
- width: 0.3155856499999966,
87
- height: 1.0583332999999997,
88
- pins: [
89
- {
90
- pinId: "R11.1",
91
- x: 1.7580660749999977,
92
- y: 2.3025814000000002,
93
- },
94
- {
95
- pinId: "R11.2",
96
- x: 1.757519574999999,
97
- y: 1.2,
98
- },
99
- ],
100
- },
101
- {
102
- chipId: "schematic_component_3",
103
- center: {
104
- x: -1.7577928249999983,
105
- y: -2.7512907000000002,
106
- },
107
- width: 0.3155856499999966,
108
- height: 1.0583332999999997,
109
- pins: [
110
- {
111
- pinId: "R12.1",
112
- x: -1.7580660749999977,
113
- y: -3.3025814000000002,
114
- },
115
- {
116
- pinId: "R12.2",
117
- x: -1.757519574999999,
118
- y: -2.2,
119
- },
120
- ],
121
- },
122
- {
123
- chipId: "schematic_component_4",
124
- center: {
125
- x: 1.7577928249999983,
126
- y: -2.7512907000000002,
127
- },
128
- width: 0.3155856499999966,
129
- height: 1.0583332999999997,
130
- pins: [
131
- {
132
- pinId: "R13.1",
133
- x: 1.7580660749999977,
134
- y: -3.3025814000000002,
135
- },
136
- {
137
- pinId: "R13.2",
138
- x: 1.757519574999999,
139
- y: -2.2,
140
- },
141
- ],
142
- },
143
- ],
144
- directConnections: [
145
- {
146
- pinIds: ["C20.1", "U3.8"],
147
- netId: "capacitor.C20 > port.pin1 to .U3 > .VDD",
148
- },
149
- {
150
- pinIds: ["C20.2", "U3.4"],
151
- netId: "capacitor.C20 > port.pin2 to .U3 > .GND",
152
- },
153
- {
154
- pinIds: ["R11.2", "U3.1"],
155
- netId: "resistor.R11 > port.pin2 to .U3 > .N_CS",
156
- },
157
- {
158
- pinIds: ["R13.2", "R12.2"],
159
- netId: "resistor.R11 > port.pin1 to resistor.R12 > port.pin1",
160
- },
161
- ],
162
- netConnections: [
163
- {
164
- netId: "V3_3",
165
- pinIds: ["U3.8", "U3.3", "U3.7", "C20.1", "R11.1"],
166
- },
167
- {
168
- netId: "GND",
169
- pinIds: ["U3.4", "C20.2"],
170
- },
171
- {
172
- netId: "FLASH_N_CS",
173
- pinIds: ["U3.1", "R11.2"],
174
- },
175
- ],
176
- availableNetLabelOrientations: {
177
- V3_3: ["y+"],
178
- GND: ["y-"],
179
- },
180
- maxMspPairDistance: 5,
181
- } as InputProblem
182
-
183
- test("example18", () => {
184
- const solver = new SchematicTracePipelineSolver(inputProblem)
185
- solver.solve()
186
- expect(solver).toMatchSolverSnapshot(import.meta.path)
187
- })
@@ -1,175 +0,0 @@
1
- import { expect } from "bun:test"
2
- import { test } from "bun:test"
3
- import { SchematicTracePipelineSolver, type InputProblem } from "lib/index"
4
- import "tests/fixtures/matcher"
5
-
6
- const inputProblem = {
7
- chips: [
8
- {
9
- chipId: "schematic_component_0",
10
- center: {
11
- x: 0,
12
- y: 0,
13
- },
14
- width: 0.4,
15
- height: 0.8,
16
- pins: [
17
- {
18
- pinId: "U1.6",
19
- x: 0.6000000000000001,
20
- y: -0.2,
21
- },
22
- {
23
- pinId: "U1.8",
24
- x: 0.6000000000000001,
25
- y: 0,
26
- },
27
- {
28
- pinId: "U1.1",
29
- x: 0.6000000000000001,
30
- y: 0.2,
31
- },
32
- ],
33
- },
34
- {
35
- chipId: "schematic_component_1",
36
- center: {
37
- x: 1.4,
38
- y: 0.55,
39
- },
40
- width: 0.5291665999999999,
41
- height: 1.0583333000000001,
42
- pins: [
43
- {
44
- pinId: "C2.1",
45
- x: 1.4002733499999995,
46
- y: -0.0012093000000001908,
47
- },
48
- {
49
- pinId: "C2.2",
50
- x: 1.3997266500000003,
51
- y: 1.1012093000000003,
52
- },
53
- ],
54
- },
55
- {
56
- chipId: "schematic_component_2",
57
- center: {
58
- x: 2.7,
59
- y: 1.3,
60
- },
61
- width: 1.0583332999999997,
62
- height: 0.388910699999999,
63
- pins: [
64
- {
65
- pinId: "R1.1",
66
- x: 2.1487093,
67
- y: 1.3002732499999994,
68
- },
69
- {
70
- pinId: "R1.2",
71
- x: 3.2512907000000006,
72
- y: 1.2997267500000007,
73
- },
74
- ],
75
- },
76
- {
77
- chipId: "schematic_component_3",
78
- center: {
79
- x: 4.4,
80
- y: 0,
81
- },
82
- width: 0.4,
83
- height: 0.4,
84
- pins: [
85
- {
86
- pinId: "JP5.1",
87
- x: 3.8000000000000003,
88
- y: 0,
89
- },
90
- ],
91
- },
92
- {
93
- chipId: "schematic_component_4",
94
- center: {
95
- x: 4.4,
96
- y: -0.9,
97
- },
98
- width: 0.4,
99
- height: 0.4,
100
- pins: [
101
- {
102
- pinId: "JP9.1",
103
- x: 3.8000000000000003,
104
- y: -0.9,
105
- },
106
- ],
107
- },
108
- {
109
- chipId: "schematic_component_5",
110
- center: {
111
- x: 2,
112
- y: -1.1,
113
- },
114
- width: 0.8843008999999997,
115
- height: 0.5299361999999987,
116
- pins: [
117
- {
118
- pinId: "JP8.1",
119
- x: 2.4458007999999998,
120
- y: -1.2015872704999997,
121
- },
122
- {
123
- pinId: "JP8.2",
124
- x: 2.0034928,
125
- y: -0.8474009705000005,
126
- },
127
- {
128
- pinId: "JP8.3",
129
- x: 1.5541992,
130
- y: -1.2014628704999997,
131
- },
132
- ],
133
- },
134
- ],
135
- directConnections: [
136
- {
137
- pinIds: ["C2.1", "U1.8"],
138
- netId: "capacitor.C2 > port.pin1 to .U1 > .pin8",
139
- },
140
- {
141
- pinIds: ["C2.2", "R1.1"],
142
- netId: "capacitor.C2 > port.pin2 to .R1 > .pin1",
143
- },
144
- {
145
- pinIds: ["R1.1", "U1.1"],
146
- netId: "resistor.R1 > port.pin1 to .U1 > .pin1",
147
- },
148
- {
149
- pinIds: ["JP5.1", "R1.2"],
150
- netId: "pinheader.JP5 > port.pin1 to .R1 > .pin2",
151
- },
152
- {
153
- pinIds: ["JP9.1", "R1.2"],
154
- netId: "pinheader.JP9 > port.pin1 to .R1 > .pin2",
155
- },
156
- {
157
- pinIds: ["JP8.2", "U1.6"],
158
- netId: "solderjumper.JP8 > port.pin2 to .U1 > .pin6",
159
- },
160
- ],
161
- netConnections: [
162
- {
163
- netId: "PAD",
164
- pinIds: ["R1.2", "JP5.1", "JP9.1"],
165
- },
166
- ],
167
- availableNetLabelOrientations: {},
168
- maxMspPairDistance: 5,
169
- } as InputProblem
170
-
171
- test("example19", () => {
172
- const solver = new SchematicTracePipelineSolver(inputProblem)
173
- solver.solve()
174
- expect(solver).toMatchSolverSnapshot(import.meta.path)
175
- })
@@ -1,190 +0,0 @@
1
- import { expect } from "bun:test"
2
- import { test } from "bun:test"
3
- import { SchematicTracePipelineSolver, type InputProblem } from "lib/index"
4
- import "tests/fixtures/matcher"
5
-
6
- const inputProblem = {
7
- chips: [
8
- {
9
- chipId: "schematic_component_0",
10
- center: {
11
- x: 0,
12
- y: 0,
13
- },
14
- width: 2,
15
- height: 1.4,
16
- pins: [
17
- {
18
- pinId: "U3.8",
19
- x: -1.4,
20
- y: 0.42500000000000004,
21
- },
22
- {
23
- pinId: "U3.4",
24
- x: -1.4,
25
- y: -0.42500000000000004,
26
- },
27
- {
28
- pinId: "U3.1",
29
- x: 1.4,
30
- y: 0.5,
31
- },
32
- {
33
- pinId: "U3.6",
34
- x: 1.4,
35
- y: 0.30000000000000004,
36
- },
37
- {
38
- pinId: "U3.5",
39
- x: 1.4,
40
- y: 0.10000000000000009,
41
- },
42
- {
43
- pinId: "U3.2",
44
- x: 1.4,
45
- y: -0.09999999999999998,
46
- },
47
- {
48
- pinId: "U3.3",
49
- x: 1.4,
50
- y: -0.3,
51
- },
52
- {
53
- pinId: "U3.7",
54
- x: 1.4,
55
- y: -0.5,
56
- },
57
- ],
58
- },
59
- {
60
- chipId: "schematic_component_1",
61
- center: {
62
- x: -2.3145833,
63
- y: 0,
64
- },
65
- width: 0.5291665999999999,
66
- height: 1.0583333000000001,
67
- pins: [
68
- {
69
- pinId: "C20.1",
70
- x: -2.3148566499999994,
71
- y: 0.5512093000000002,
72
- },
73
- {
74
- pinId: "C20.2",
75
- x: -2.31430995,
76
- y: -0.5512093000000002,
77
- },
78
- ],
79
- },
80
- {
81
- chipId: "schematic_component_2",
82
- center: {
83
- x: 1.7577928249999983,
84
- y: 1.7512907000000002,
85
- },
86
- width: 0.3155856499999966,
87
- height: 1.0583332999999997,
88
- pins: [
89
- {
90
- pinId: "R11.1",
91
- x: 1.7580660749999977,
92
- y: 2.3025814000000002,
93
- },
94
- {
95
- pinId: "R11.2",
96
- x: 1.757519574999999,
97
- y: 1.2,
98
- },
99
- ],
100
- },
101
- {
102
- chipId: "schematic_component_3",
103
- center: {
104
- x: -1.7577928249999983,
105
- y: -2.7512907000000002,
106
- },
107
- width: 0.3155856499999966,
108
- height: 1.0583332999999997,
109
- pins: [
110
- {
111
- pinId: "R12.1",
112
- x: -1.7580660749999977,
113
- y: -3.3025814000000002,
114
- },
115
- {
116
- pinId: "R12.2",
117
- x: -1.757519574999999,
118
- y: -2.2,
119
- },
120
- ],
121
- },
122
- {
123
- chipId: "schematic_component_4",
124
- center: {
125
- x: 1.7577928249999983,
126
- y: -2.7512907000000002,
127
- },
128
- width: 0.3155856499999966,
129
- height: 1.0583332999999997,
130
- pins: [
131
- {
132
- pinId: "R13.1",
133
- x: 1.7580660749999977,
134
- y: -3.3025814000000002,
135
- },
136
- {
137
- pinId: "R13.2",
138
- x: 1.757519574999999,
139
- y: -2.2,
140
- },
141
- ],
142
- },
143
- ],
144
- directConnections: [
145
- {
146
- pinIds: ["C20.1", "U3.8"],
147
- netId: "capacitor.C20 > port.pin1 to .U3 > .VDD",
148
- },
149
- {
150
- pinIds: ["C20.2", "U3.4"],
151
- netId: "capacitor.C20 > port.pin2 to .U3 > .GND",
152
- },
153
- {
154
- pinIds: ["R11.2", "U3.1"],
155
- netId: "resistor.R11 > port.pin2 to .U3 > .N_CS",
156
- },
157
- {
158
- pinIds: ["R13.2", "R12.2"],
159
- netId: "resistor.R11 > port.pin1 to resistor.R12 > port.pin1",
160
- },
161
- ],
162
- netConnections: [
163
- {
164
- netId: "V3_3",
165
- pinIds: ["U3.8", "U3.3", "U3.7", "C20.1", "R11.1"],
166
- netLabelWidth: 1,
167
- },
168
- {
169
- netId: "GND",
170
- pinIds: ["U3.4", "C20.2"],
171
- netLabelWidth: 0.8,
172
- },
173
- {
174
- netId: "FLASH_N_CS",
175
- pinIds: ["U3.1", "R11.2"],
176
- netLabelWidth: 0.1,
177
- },
178
- ],
179
- availableNetLabelOrientations: {
180
- V3_3: ["y+"],
181
- GND: ["y-"],
182
- },
183
- maxMspPairDistance: 5,
184
- } as InputProblem
185
-
186
- test("example20", () => {
187
- const solver = new SchematicTracePipelineSolver(inputProblem)
188
- solver.solve()
189
- expect(solver).toMatchSolverSnapshot(import.meta.path)
190
- })