Commit Graph

94 Commits

Author SHA1 Message Date
Mikolaj Wielgus 4c1a72dc1d refactor(autorouter/autorouter): Put ratsnest in wrapper, mostly transparent for now 2025-10-13 00:32:53 +02:00
Mikolaj Wielgus a3521e7286 feat(autorouter/anterouter): Add option to set fanout clearance 2025-10-07 22:37:50 +02:00
Mikolaj Wielgus 8095c3a89a feat(autorouter/anterouter): Don't anteroute fanout vias inside polys 2025-10-06 13:18:19 +02:00
Mikolaj Wielgus b50e58b0fa feat(autorouter/ratsnest): Have one terminating dot for each layer of ratvertex
Some routes projects still crash while autorouting, but we are
progressing.
2025-09-29 18:22:56 +02:00
Mikolaj Wielgus 9a5b2095d5 feat(autorouter/autorouter): Implement germ of multilayer autorouting 2025-09-27 15:45:10 +02:00
Mikolaj Wielgus a4a000feb9 feat(autorouter/ratsnest): Have ratlines across layers 2025-09-23 13:25:32 +02:00
Mikolaj Wielgus 1b485e81a6 feat(autorouter/permuter): Implement permutation by ratline cut
Not yet used, and can get stuck in an infinite loop, but the cut seems
to work.
2025-09-09 16:24:15 +02:00
Mikolaj Wielgus 4326925bbf feat(autorouter/permutator): Preorder and permutate over whole ratline conn. comps
This is not enough to autoroute 4x4_1206_led_matrix_breakout, but is as
usual, is a step forward.
2025-09-06 01:24:00 +02:00
Mikolaj Wielgus 19c6ede09a refactor(autorouter/autorouter): Move ratline sorting to `permutator.rs` 2025-09-05 12:58:30 +02:00
Mikolaj Wielgus f99f31e356 refactor(autorouter/autoroute): Move permutator to new file, `permutator.rs` 2025-09-05 12:33:15 +02:00
Mikolaj Wielgus e5e5f9513e feat(autorouter/ratline): Only count interior ratline intersections
This hardly makes a difference for now, but may become useful later.
2025-09-04 17:03:15 +02:00
Mikolaj Wielgus ce0424b3e6 fix(autorouter/autoroute): Skip permutations that result in nothing undone 2025-09-01 20:22:39 +02:00
Mikolaj Wielgus 09c98f2d17 feat(autorouter/autoroute): Add option to toggle permutation
Updated with the following command in Fish shell:

```
for f in tests/**.cmd; jq ".done?.[].Autoroute[1].permutate |= false" $f | sponge $f; end
```
2025-07-19 21:42:47 +02:00
Mikolaj Wielgus d181c7df1b feat(autorouter/autoroute): Implement basic brute-force permutator
Permutates if and until a solution is found. Does not do optimization
so far.

Thanks to this, it is now possible to route the DE-9 to DE-9 test
without having to find the correct sequence of autorouting jobs.
2025-07-19 21:31:31 +02:00
Mikolaj Wielgus 43005eb864 feat(autorouter/autorouter): Add presorting by ratline intersection count and length
Sadly, this does not work well for the DE-9 to DE-9 test, but it is a
step forward.
2025-07-14 13:26:38 +02:00
Mikolaj Wielgus 0752817538 refactor(autorouter/ratsnest): Split out ratline code to new file, ratline.rs 2025-07-14 13:26:38 +02:00
Ellen Emilia Anna Zscheile d3dc826be4 feat: Implement TopoNavmesh DualOuter-DualOuter extraction
This also fixes a sign bug in LineIntersection calculation
2025-06-27 15:15:26 +02:00
Ellen Emilia Anna Zscheile a561b278fc feat(router/ng/router): Implementation of the topological router
- feat(autorouter): Prepare for population of planar Topo-Navmesh with existing routes
  See also issue #166.
- feat(topola-egui): Add dialog for topological navmesh layer selection
- feat(router/ng/eval): Optionally restrict set of allowed TopoNavmesh edges
- fix(router/ng/eval): Use poly_ext_handover
2025-06-27 15:15:24 +02:00
Mikolaj Wielgus d0c304adbd feat(router/thetastar): Implement Theta* search algorithm
Closes https://codeberg.org/topola/topola/issues/121
2025-06-12 16:45:07 +02:00
Ellen Emilia Anna Zscheile 92e8600452 chore(autorouter): remove unnecessary mutability 2025-04-25 21:37:37 +02:00
Mikolaj Wielgus b736aa2d7d refactor(layout::poly): use `MakeRef<...>` to obtain poly's ref-struct 2025-04-22 21:59:45 +02:00
Ellen Emilia Anna Zscheile 122ff0122f fix(board): make Poly' apex generation non-lazy
- insert polygon parts before polygon compound
2025-04-17 15:03:14 +02:00
Ellen Emilia Anna Zscheile cf36177097 refactor: don't export modules only containing a single item 2025-02-02 22:03:12 +00:00
Mikolaj Wielgus 44c30caafe chore(licensing): add REUSE license headers to `**.{rs,md,toml}` files
I ran the following command in Fish shell:

```
reuse annotate --skip-unrecognised --copyright="Topola contributors" --license="MIT" **.{rs,md,toml}
```

The choice of year 2024 in the copyright statements is intentional.
2024-12-29 22:47:00 +01:00
Alain Emilia Anna Zscheile ba41ff6837 refactor: get rid of unnecessary bounds on struct generics 2024-12-12 16:38:26 +01:00
Mikolaj Wielgus d6fe67a373 feat(board,layout,drawing): implement edit recording
Not stored in the undo/redo objects yet.
2024-11-13 00:00:56 +00:00
Mikolaj Wielgus 7d75f918e7 feat(autorouter): add pointroute execution, which routes to a point
Not available as a command (for now?). Hasn't been tested yet.
2024-10-22 00:40:40 +02:00
Mikolaj Wielgus 6104e761d2 refactor: autogenerate getters with `derive-getters` crate 2024-10-11 18:43:15 +02:00
Alain Emilia Anna Zscheile d0058ef5fd router: get rid of unnecessary RouterError 2024-10-06 00:22:32 +02:00
Alain Emilia Anna Zscheile 5e3ccf2560 chore: cargo fmt 2024-10-01 20:50:38 +00:00
Alain Emilia Anna Zscheile f653a96eb0 chore: trivial fixes of clippy warnings 2024-10-01 20:50:38 +00:00
Mikolaj Wielgus 5448474857 terminology: distinguish between "command" and its "execution" 2024-10-01 16:01:11 +02:00
Mikolaj Wielgus cc0bf1845a terminology: suffix some single-verb object type names with "Stepper" 2024-10-01 14:27:57 +02:00
Alain Emilia Anna Zscheile 1a6340c6f1 chore: remove unused imports 2024-10-01 09:54:46 +02:00
Mikolaj Wielgus 4b6e3e0a5c egui,router: add option to toggle squeezing 2024-09-01 01:24:52 +02:00
Mikolaj Wielgus 0b7e5f1b9b egui,autorouter,router: add option to toggle wrapping around bands 2024-08-31 14:12:38 +02:00
Mikolaj Wielgus a52515f6d3 autorouter: add option to disable presorting by pairwise detours 2024-08-30 23:11:25 +02:00
Mikolaj Wielgus f7f2e8ea49 autorouter: if band removal fails, propagate error instead of panicking 2024-08-30 16:32:37 +02:00
Mikolaj Wielgus 63d3e345aa egui,autorouter: add action and command to measure length of bands 2024-08-23 04:14:06 +02:00
Mikolaj Wielgus c9d99c2c1f autorouter: sort by pairwise total detour lengths before autorouting 2024-08-06 15:43:25 +02:00
Mikolaj Wielgus 47d8e82344 egui,autorouter: make detour comparison invokable from GUI 2024-08-05 13:14:56 +02:00
Mikolaj Wielgus b2c9305cea autorouter: add new compare command to be used for sorting later 2024-08-05 04:33:51 +02:00
Mikolaj Wielgus 43b48e78e3 router: use `Step` trait for `Astar` too 2024-08-04 18:50:58 +02:00
Mikolaj Wielgus ece9c4aa5a autorouter,router: put stepper finishing in `Step` trait too 2024-08-04 16:36:11 +02:00
Mikolaj Wielgus 1305487c7f autorouter: use new `Step` trait for stepping 2024-08-03 16:40:04 +02:00
Mikolaj Wielgus 5b32797022 autorouter: return a different status every time routing a band finishes 2024-08-01 12:56:24 +02:00
Mikolaj Wielgus fcffb76de4 autorouter: create new command: Remove Selected Bands 2024-07-25 01:46:54 +02:00
Mikolaj Wielgus b568f2d790 autorouter: split selection into pin selection and band selection 2024-07-24 14:59:28 +02:00
Mikolaj Wielgus 3bf4d2cdb1 autorouter,board: use both band uids and band termsegs 2024-07-24 02:27:11 +02:00
Mikolaj Wielgus be9ff3a85a layout: rename "zone" to "poly"
We'll keep the term "zone" for higher-level concepts.
2024-07-09 23:09:39 +02:00