Mikolaj Wielgus
f96728fbe0
refactor(autorouter/autorouter): Rename permut{e,er,ate,ator} to reconfigur{e,er,ate,ator}
...
Since, in more general cases, we don't only reorder, but also change
values of some parameters.
2025-10-18 15:59:39 +02:00
Mikolaj Wielgus
212a63aa57
refactor(autorouter/autorouter): Do some renaming to distinguish multilayer from planar
2025-10-18 15:04:18 +02:00
Mikolaj Wielgus
2f7cee62a6
fix(autorouter/anterouter): Use correct ratline principal layer instead of layer 0
2025-10-17 23:21:32 +02:00
Mikolaj Wielgus
3d55d1a81e
fix(autorouter/autorouter): Skip translayer ratlines in planar autorouting
...
This prevents planar autorouting from crashing.
2025-10-16 14:59:10 +02:00
Mikolaj Wielgus
8f59319902
feat(autorouter/autorouter): Have separate ratsnest for each (principal) layer
2025-10-15 15:15:02 +02:00
Mikolaj Wielgus
cd73c766a5
refactor(topola-egui): Move storing principal layer to planar autoroute options
...
I've done some struct renaming while at it.
2025-10-13 21:38:47 +02:00
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