@tscircuit/fanout-solver 0.0.17 → 0.0.19

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/README.md CHANGED
@@ -42,6 +42,11 @@ and treats each bus-layer decision atomically.
42
42
  alternate instead of favoring one axis; square grids distribute equally
43
43
  across north, south, east, and west.
44
44
  - Enumerates combinations of the copper layers implied by `layerCount`.
45
+ - Keeps a bounded beam of route alternatives for multi-connection buses, so
46
+ grouped power/signal lanes can backtrack across layer and track choices
47
+ before committing a prefix.
48
+ - Keys route-prefix caches by both bus and layer, preserving plan uniqueness
49
+ when grouped-layer search changes bus order.
45
50
  - Prefers depth-cycled layer assignments: matching north/south (or east/west)
46
51
  bus depths share a layer, and deeper pairs cycle through every available
47
52
  escape layer. This forces a small stackup to reuse routing channels.
@@ -61,9 +66,17 @@ and treats each bus-layer decision atomically.
61
66
  breakout corridor.
62
67
  - Chamfers orthogonal routing corners into 45° segments before validating and
63
68
  emitting the fanout.
64
- - Verifies pad, via, trace, and already-routed fanout clearance.
65
- - Treats an obstacle whose `connectedTo` list contains the connection name as
66
- electrically connected copper rather than a foreign keepout.
69
+ - Verifies oriented-pad, via, trace, and already-routed fanout clearance on
70
+ every complete candidate, independent of the routing strategy that produced
71
+ it.
72
+ - Resolves `netConnectionName`, connection, port, trace, and obstacle metadata
73
+ into electrical-net identities. Same-net copper may merge; different-net
74
+ pads, traces, and vias must retain clearance on every layer they occupy.
75
+ - `allowSameNetMerges` lets grouped branches such as VCC or GND reuse connected
76
+ copper instead of reserving artificial clearance from one another. It is
77
+ opt-in; different electrical nets remain hard obstacles.
78
+ - Audits route continuity, unique connection coverage, boundary exits, and
79
+ retained downstream endpoints before marking a solution complete.
67
80
  - Emits supplied fanout traces, via obstacles, and moved breakout endpoints in a
68
81
  new `SimpleRouteJson`. The returned problem is ready for a downstream
69
82
  autorouter to finish.
@@ -177,6 +190,8 @@ bus-layer combination search.
177
190
  - `busLayerAssignments`: the selected layer for every bus
178
191
  - `busDirections`: the direction shared by each bus
179
192
  - `attempts`: score and success metadata for every tried layer combination
193
+ - `validation`: the final geometry/connectivity report, including the number of
194
+ independently validated breakouts
180
195
 
181
196
  ## Dataset 01
182
197
 
@@ -198,15 +213,18 @@ parameters. Each sample has one shared boundary around all of its footprints,
198
213
  and component bounds come from the exact footprinter-generated copper pad
199
214
  extents.
200
215
 
201
- ## SRJ19 benchmark
216
+ ## SRJ29 benchmark
202
217
 
203
- The repository also loads all 200 samples from
204
- [`tscircuit/dataset-srj19`](https://github.com/tscircuit/dataset-srj19) as a
205
- pinned development dependency. The adapter keeps the complete obstacle field
206
- but selects only connections that touch the BGA, producing progressively larger
207
- fanout problems with opposite-side passive overlays. Every adapted problem uses
208
- the same six-layer stackup (`top`, `inner1` through `inner4`, and `bottom`) so
209
- benchmark improvements are directly comparable.
218
+ The repository loads all 200 samples from the derivative
219
+ [`tscircuit/dataset-srj29-bga-decoupling`](https://github.com/tscircuit/dataset-srj29-bga-decoupling)
220
+ as a pinned development dependency. The adapter keeps the complete obstacle
221
+ field, including opposite-layer capacitor pads and bodies. VCC and GND are
222
+ grouped onto opposite boundary corridors, while the capacitor pad remains the
223
+ downstream endpoint of every power connection; a local capacitor or plane via
224
+ alone cannot count as a solved BGA pin. Remaining edge signals are grouped by
225
+ direction. Every adapted problem uses the same six-layer stackup (`top`,
226
+ `inner1` through `inner4`, and `bottom`) so benchmark improvements are directly
227
+ comparable.
210
228
 
211
229
  Run the full benchmark with:
212
230
 
@@ -219,22 +237,23 @@ Use `--sample sample001`, `--limit 10`, or
219
237
  default and print progress as they finish. `--concurrency 8` runs isolated
220
238
  samples in parallel, and `--sample-timeout-seconds 600` prevents a difficult
221
239
  sample from blocking the remaining work. Each run writes the full ordered
222
- results to `benchmark-results/srj19.json` and
223
- `benchmark-results/srj19.md`. Partial solutions are reported as benchmark
224
- results instead of failing the command, making current completion rates a
225
- baseline for solver improvements. `bun run benchmark:srj19` is an alias for the
226
- same command.
227
-
228
- The `SRJ19 Benchmark` GitHub Actions workflow runs the complete dataset on a
240
+ results to `benchmark-results/srj29.json` and
241
+ `benchmark-results/srj29.md`. A row is marked solved only when every input
242
+ connection has a validated breakout, all downstream endpoints remain attached,
243
+ and the independent DRC audit passes. Partial solutions are reported as
244
+ benchmark results instead of failing the command, making current completion
245
+ rates a baseline for solver improvements. `bun run benchmark:srj29` is an alias
246
+ for the same command.
247
+
248
+ The `SRJ29 Benchmark` GitHub Actions workflow runs the complete dataset on a
229
249
  Blacksmith 32-vCPU ARM runner with 32 sample processes by default. It can be
230
250
  started manually with an optional sample id, or for a pull request by adding
231
251
  `[BENCHMARK TEST]` to its title. The workflow publishes the Markdown summary and
232
252
  uploads both reports as an artifact.
233
253
 
234
- Run `bun run start` and open the `datasets/srj19` Cosmos fixture to step the
235
- selected sample through `GenericSolverDebugger`. The page has Previous/Next,
236
- sample dropdown, and range controls and stores the selection in the `sample`
237
- URL parameter.
254
+ Run `bun run start` and inspect the SRJ29 fixtures to step through the selected
255
+ sample. The derivative dataset also publishes dedicated Cosmos pages for the
256
+ first ten samples.
238
257
 
239
258
  ## Dataset 02
240
259