Commit Graph

157 Commits

Author SHA1 Message Date
Mikolaj Wielgus 63e1f7f25a feat(topola-egui): Paint constraint edges in thick white instead of offsetted yellow 2025-11-16 01:56:34 +01:00
Mikolaj Wielgus cfabfe335a fix(topola-cli): Fix CLI build broken since 8216d3a907 2025-11-05 01:28:49 +01:00
Mikolaj Wielgus 8216d3a907 feat(topola-egui): Add sliders to set autorouting timeouts (not fully translated yet) 2025-11-04 20:02:34 +01:00
Mikolaj Wielgus 9afe862edc feat(topola-egui): Display timeout of planar autoroute too 2025-11-04 17:15:27 +01:00
Mikolaj Wielgus 18e8f9812c feat(stepper): Replace overengineered SMA rate timeout with two accumulators 2025-11-04 16:37:41 +01:00
Mikolaj Wielgus 0523fb53df feat(topola-egui): Make step rate slider go up to 1000 steps/s 2025-11-03 02:10:02 +01:00
Mikolaj Wielgus eff58d99e3 feat(autorouter/multilayer_reconfigurator): Add tracking of SMA of rate
SMA = Simple Moving Average
2025-11-03 01:26:49 +01:00
Mikolaj Wielgus 0f3f96d4af feat(topola-egui): Add way to access subprogress and subprogress bar
This will be useful in future commits when I will be improving
reconfiguration triggers.
2025-11-01 02:40:25 +01:00
Mikolaj Wielgus c0f4319a13 refactor(stepper): Join progress estimation into one method 2025-10-31 02:08:42 +01:00
Mikolaj Wielgus 7b66db1672 feat(topola-egui): Add checkboxes to toggle displaying obstacles and ghosts
Disabled showing them by default.
2025-10-30 19:01:34 +01:00
Mikolaj Wielgus 55ed4bf4cc feat(topola-egui): Replace "update timestep" with "step rate"
The term "timestep" is usually used to refer to a time step on some
internal simulation time scale that is separate from the real time.
There is however no time scale other than real time in Topola.
2025-10-30 05:18:05 +01:00
Mikolaj Wielgus c163980073 feat(topola-egui): Add checkbox to toggle fixing of step rate 2025-10-29 16:05:56 +01:00
Mikolaj Wielgus 04293d9e4a feat(topola-egui): Move debug-only view options to new menubar's menu "Debug" 2025-10-29 03:53:18 +01:00
Mikolaj Wielgus b9f7d4ec4f fix(topola-egui): Add another condition to prevent stuttering 2025-10-28 18:13:46 +01:00
Mikolaj Wielgus ba5a254e11 fix(topola-egui): Always clamp `dt` to `i.predicted_dt`
`egui` clamps its `i.stable_dt` to `i.predicted_dt` only when egui
requested a repaint during the last frame. I however sometimes
experience severe stuttering, which means that this detection
method is insufficient to ensure smoothness. So, let's clamp `dt` to
`i.predicted_dt` and see if this helps.
2025-10-28 16:05:58 +01:00
Mikolaj Wielgus d50e346706 feat(autorouter/autorouter): Remove "compare detours"
This was a time-expensive way to presort ratlines, it's much faster to
instead operate on ratline line segments.
2025-10-22 01:44:52 +02:00
Mikolaj Wielgus b7fd6a0cab feat(autorouter/autorouter): Impl. rudimentary multilayer reconfigurator (not yet functional) 2025-10-21 18:00:55 +02:00
Mikolaj Wielgus 1b3ecc37b1 refactor(specctra-core): Remove `layer_count` from `SpecctraMesadata`
This information is already stored in `Drawing`, I somehow missed that
when I was adding this field.
2025-10-20 14:24:41 +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 2895277e73 fix: Fix build and test errors due to botched last commit 2025-10-14 02:21:48 +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 43f8d69281 fix(topola-egui): Don't filter out translayer ratlines 2025-10-08 23:00:04 +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 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 d74a06b2ea feat(topola-egui): Hide ratlines that were already routed 2025-09-22 15:03:14 +02:00
Mikolaj Wielgus 00aa79ff31 feat(drawing/query): Don't infringe or collide primitives on different layers 2025-09-22 01:27:08 +02:00
Mikolaj Wielgus 3078d9d546 feat(topola-egui): Highlight node index of the obstacling primitive 2025-09-21 14:40:26 +02:00
Mikolaj Wielgus d75c73b540 feat(topola-egui): Add option to display primitive indices on debug overlay 2025-09-21 13:09:48 +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 4a057d3499 fix(math/mod): Move code pertaining to circles to new file, circle.rs 2025-08-29 13:36:48 +02:00
Mikolaj Wielgus fca8e44269 feat(router/router): Backtrack if initial parent was on the same compound 2025-08-24 00:12:38 +02:00
Mikolaj Wielgus 3738bacf6f fix(math/bitangents): Calculate bitangents even for intersecting circles
This fixes the bug where the router was failing to draw around SMD pads.
2025-08-19 15:46:12 +02:00
Mikolaj Wielgus 5fd4926fb6 feat(topola-egui): Display guide-bitangents on debug overlay 2025-08-16 01:17:29 +02:00
Mikolaj Wielgus 177c8abb18 refactor(drawing/guide): Instead of trait, just impl guide methods on `Drawing` 2025-08-15 23:31:23 +02:00
Mikolaj Wielgus 9819879617 feat(topola-egui): Display guide-circles on debug overlay 2025-08-15 16:18:31 +02:00
Mikolaj Wielgus 987a4c6e9e fix: Flip by X instead of rotating by 180 degrees
Obviously -- flip is undone by a flip, not a rotation. This corrects the
previous commit.
2025-08-11 21:15:40 +02:00
Mikolaj Wielgus b7a5d2ccb8 fix(specctra-core): Rotate components placed on back by 180 degrees 2025-08-11 20:21:45 +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 d7129354a1 feat(autorouter/autoroute): Record band assigns so undo actually works
Aborting the autoroute stepper was unimplemented and it would make the
autorouting job finish instead. This is fixed now.
2025-07-17 21:08:42 +02:00
Ellen Emilia Anna Zscheile 4fea23c9ac chore: Fix warnings about lifetime annotations 2025-07-17 12:33:31 +02:00
Mikolaj Wielgus ab4ba4e0b8 refactor(topola-egui): Split out some display code to new file, displayer.rs 2025-07-15 15:40:45 +02:00
Mikolaj Wielgus 800db3d4c0 refactor(topola-egui): Split some parts of `Viewport` code to methods 2025-07-15 02:13:56 +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 68d9844d0d feat(topola-egui): Add progress bar for the currently routed ratline
The capability to measure progress will later be useful to choose slower
but better optimization strategies if more time is available.
2025-07-10 22:38:46 +02:00
Mikolaj Wielgus 29dc59df04 refactor(router/navmesh): Split out navmesh triangulation into "prenavmesh" module 2025-07-09 14:55:40 +02:00