Commit Graph

234 Commits

Author SHA1 Message Date
Mikolaj Wielgus 1d8745e15d refactor(autorouter/connected_components): Rename "conncomps" to "connected components"
It's easier to understand without abbreviation.
2025-10-20 14:05:44 +02:00
Mikolaj Wielgus 63764a7e29 test: Add stable multivibrator test, the first multilayer autorouting test 2025-10-20 00:30:44 +02:00
Mikolaj Wielgus dd8a4c5808 fix(autorouter/conncomps): Take into account vias when computing connected components 2025-10-19 22:31:16 +02:00
Mikolaj Wielgus 260aca064d refactor(autorouter/planar_reconfigurator): Return different status upon reconfiguration 2025-10-19 16:08:26 +02:00
Mikolaj Wielgus 4306aa33c4 refactor(stepper): Have reconfigure configuration take any type, not only `Vec<_>` 2025-10-18 16:25:20 +02:00
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 570a3a80f8 fix(autorouter/anterouter): Don't fan out if ratline is on same layer 2025-10-18 00:20:31 +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 64a519420f fix(autorouter/anterouter): Remove fanout if seg addition fails 2025-10-17 22:26:07 +02:00
Mikolaj Wielgus d920f62a1e fix(autorouter/anterouter): Make anterouting undo-redoable 2025-10-16 23:51:55 +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 60cf00e014 feat(autorouter/anterouter): As second choice, anteroute fanouts in ordinal directions 2025-10-10 18:03:50 +02:00
Mikolaj Wielgus 8235c66c7e fix(autorouter/anterouter): Correctly calculate fanout lengths 2025-10-08 02:18:56 +02:00
Mikolaj Wielgus a3521e7286 feat(autorouter/anterouter): Add option to set fanout clearance 2025-10-07 22:37:50 +02:00
Mikolaj Wielgus 506104a6a7 fix(autorouter/anterouter): Make fanouts axis-aligned with their ratline endpoints 2025-10-07 14:24:13 +02:00
Mikolaj Wielgus 7e1a5857b1 fix(autorouter/compass_direction): Correct flipped North/South 2025-10-07 13:58:29 +02:00
Mikolaj Wielgus c630abcdc1 feat(autorouter/anterouter): Anteroute fanouts farther than other-layer obstacles 2025-10-07 13:28:23 +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 26ed61ad4d feat(autorouter/anterouter): Anteroute fanout segs to fanout vias 2025-10-03 15:55:58 +02:00
Mikolaj Wielgus 2ebd7ce82d feat(autorouter/anterouter): Fanout only in cardinal directions
This works around the falsely positively fillet exclusions our current
navmesh creation method causes.
2025-10-03 13:12:35 +02:00
Mikolaj Wielgus 1bbb068af9 feat(autorouter/compass_direction): Anteroute fanout vias in eight "compass" directions 2025-10-02 17:05:50 +02:00
Mikolaj Wielgus 9fcd12e6e1 Revert "refactor(autorouter/anterouter): Anchor in reference to dot circle, not bbox"
This reverts commit 46b84151fa.

This commit also added randomization of anchor position. I thought about
it again and decided that it was a bad idea.
2025-10-02 10:26:28 +02:00
Mikolaj Wielgus 46b84151fa refactor(autorouter/anterouter): Anchor in reference to dot circle, not bbox 2025-10-01 00:21:09 +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 0e12f32db4 chore: Correct copyright lines (MIT, not MIT OR Apache-2.0) 2025-09-26 00:56:08 +02:00
Mikolaj Wielgus 6930f2fb1d feat(autorouter/presorter): Make presorter parametrizable 2025-09-25 17:36:12 +02:00
Mikolaj Wielgus c120a43d04 refactor(autorouter/presorter): Move some SCC code to new file 2025-09-25 16:42:00 +02:00
Mikolaj Wielgus c14f2d2e37 fix(autorouter/ratsnest): Prioritize principal layer ratlines over others 2025-09-24 01:50:55 +02:00
Mikolaj Wielgus a4a000feb9 feat(autorouter/ratsnest): Have ratlines across layers 2025-09-23 13:25:32 +02:00
Mikolaj Wielgus 50597653ad refactor(geometry/geometry): Remove `.graph()` and its remaining usages
This will allow us to store the dots, segs, bends differently than currently.
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus f1e65267da refactor(triangulation): Don't use `.graph()` when creating triangulations 2025-09-15 22:42:45 +02:00
Mikolaj Wielgus 71fdec2f06 refactor(autorouter/ratsnest): Move unionfind to new file, don't use `.graph()` there 2025-09-15 22:42:45 +02:00
Mikolaj Wielgus e0cfc521ef refactor(geometry/geometry): Replace `NodeIndex<usize>` with just `usize`
This is a step towards ceasing to use Petgraph as internal storage for
geometry.
2025-09-15 22:42:45 +02:00
Mikolaj Wielgus 6a2102e0a2 refactor(graph): Rename `GetPetgraphIndex` to `GetIndex` 2025-09-15 22:42:45 +02:00
Mikolaj Wielgus 7c4bc87301 refactor(drawing/primitive): Rename Primitive<...> to PrimitiveRef<...> with its variants 2025-09-15 22:42:45 +02:00
Mikolaj Wielgus aee8c42720 feat(autorouter/presorter): Take into account ratline-pad intersections 2025-09-11 23:25:03 +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 fe7c258851 refactor(autorouter/permutator): Move presorting to new file, `presorter.rs` 2025-09-07 16:40:29 +02:00
Mikolaj Wielgus 12ee2f3984 refactor(autorouter/permutator): Move permuter code to new `permuter.rs` file 2025-09-06 23:59:45 +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 b49aa9e1b7 fix(autorouter/ratline): Don't count ratlines with shared endpoint as intersecting 2025-09-04 14:37:09 +02:00
Mikolaj Wielgus ce0424b3e6 fix(autorouter/autoroute): Skip permutations that result in nothing undone 2025-09-01 20:22:39 +02:00