Commit Graph

49 Commits

Author SHA1 Message Date
Alain Emilia Anna Zscheile 01deaa4b12 build(contracts): use contracts-try v0.7 from crates.io
`contracts-try` is now developed at
https://codeberg.org/topola/contracts-try and was extracted
from this repo, and rebased upon the original
crate sources to ensure proper attribution.

This removes the `vendored` directory.
2024-10-06 00:18:56 +02:00
Mikolaj Wielgus 74ef5e356f refactor(egui): add empty skeleton for interactions 2024-10-05 03:56:21 +02:00
Mikolaj Wielgus 8b9d4074e4 chore: perform forgotten rename of `command.rs` to `execution.rs` 2024-10-04 22:00:40 +02:00
Alain Emilia Anna Zscheile 5319e1f976 chore: run cargo fmt to fix lint errors 2024-10-03 16:56:09 +02:00
hakki 2f672d41c2 Autorouter: general modules descriptions (#65)
This PR consists of general modules descriptions as well as initial `autoroute.rs`  docs

Reviewed-on: https://codeberg.org/topola/topola/pulls/65
Co-authored-by: hakki <hakki@noreply.codeberg.org>
Co-committed-by: hakki <hakki@noreply.codeberg.org>
2024-10-02 22:46:32 +00:00
Mikolaj Wielgus e08a59cd74 stepper: add `Abort` trait to abort steppers 2024-10-01 19:07:40 +02: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
Mikolaj Wielgus 1c7042c8c3 autorouter: move `Execute` and `ExecuteWithStatus` to own file 2024-09-29 03:17:07 +02:00
Alain Emilia Anna Zscheile c42eab0126 vendored/contracts: fix overly verbose type annotations for enum results
This fixes issue #15.
2024-09-28 00:38:16 +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 72e630543d autorouter: if unable to route to compare detours, assume equal 2024-08-26 01:33:18 +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 33206567e3 egui,autorouter: display message once command completes 2024-08-06 02:34:54 +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 87fd5d5d05 cli: make command file argument named and optional 2024-07-16 15:45:42 +02:00
Mikolaj Wielgus c36ccc287a autorouter: improve error handling by removing some unwraps 2024-07-08 13:25:58 +02:00
Mikolaj Wielgus def3f84d6a egui,autorouter,router: highlight current obstacle 2024-07-04 00:39:08 +02:00
Mikolaj Wielgus b6cb89c017 egui,autorouter,router: display infringement shapes (aka. "ghosts") 2024-07-03 21:00:50 +02:00
Mikolaj Wielgus 806742736a cleanup: get rid of `*Trait` names for traits, use verbs and sentences 2024-07-03 13:40:37 +02:00
Mikolaj Wielgus 47c888d21b egui,autorouter,router: restore highlighting active navmesh edges 2024-07-01 18:56:41 +02:00
Mikolaj Wielgus 2259a75d92 egui,autorouter: restore displaying navmesh 2024-07-01 00:50:24 +02:00
Mikolaj Wielgus 3ce8cfcabc autorouter: fix redo operation
Redone operation was only dispatched, not truly executed.
2024-06-25 11:20:59 +02:00
Mikolaj Wielgus c24d748bea autorouter: don't save in history until command is successfully finished 2024-06-20 12:14:51 +02:00
Mikolaj Wielgus e15e1efe5e router: remove observers
The observer "pattern", arguably, is an anti-pattern that managed to get
into textbooks. It causes a lot of problems, it was a bad idea to use
it.
2024-06-18 01:37:45 +02:00
Mikolaj Wielgus b09ffad9b3 autorouter: create new command for placing vias
Undoing it is not implemented yet.
2024-06-10 02:38:24 +02:00
Mikolaj Wielgus 6b6affb3fc autorouter: move autoroute command to its own file
Since it accesses `Autorouter`'s fields, I made these `pub(super)`. This
feels unidiomatic, but let's give it a shot.
2024-06-10 02:38:03 +02:00
Mikolaj Wielgus 19a4766cb5 board,dsn: introduce `MesadataTrait`, an extension of `RulesTrait`
The trait's contents aren't implemented yet.

"mesa" is supposed to mean the opposite of "meta". By "mesadata" I don't
mean mere content or payload: I mean data that is stored *inside* or
*under* such content or payload.

I found this meaning of "mesa" -- as opposite of "meta" -- by browsing
somewhere on the internet. Fair chance many classicists would think
poorly of this usage. But I don't care about etymology: I just need a
word to close a lexical gap.
2024-06-08 16:36:21 +02:00
Mikolaj Wielgus 91480453b3 tests: add 3-pin XLR THT female to THT female test
Hardly functional so far.
2024-06-07 02:14:05 +02:00
Mikolaj Wielgus 5eeeb5a004 autorouter: select nodes with pin-layer pairs, not only pins
We call these pairs "selectors".

The command file format has been thus changed. I've upgraded the command
files in tests with the following command:

    jq ".done?.[].Autoroute |= {selectors: ([.pins.[] | {pin: ., layer: \"F.Cu\"}])}" $FILE | sponge $FILE

Where $FILE is the name of the upgraded command file.
2024-06-04 01:54:10 +02:00
Mikolaj Wielgus 765d8495c6 tests: add four 3rd order SMD LC filters test 2024-06-01 00:34:09 +02:00
Mikolaj Wielgus b22e3dce1a router,autorouter: stop hiding layout behind an arc-mutex
This was preventing us from creating a new abstraction layer over
layout.
2024-05-30 22:57:20 +02:00
Mikolaj Wielgus dcbc5be5f3 router,autorouter: improve error handling
Avoid unwrapping and use `Result<...>` instead as well-written code
should.
2024-05-30 19:54:14 +02:00
Mikolaj Wielgus 499564e6cf router: make A* a walker, i.e. make it runnable in a while loop 2024-05-27 23:50:12 +02:00
Mikolaj Wielgus 53fa89d02c egui: implement loading the history (not functional yet)
Committing this non-functional and half-baked because loading the
history requires implementing stateful deserialization, which is quite
an effort to implement with Serde, as there are no applicable derive
macros.
2024-05-23 19:34:19 +02:00
Mikolaj Wielgus 02bfe1105b egui: Implement saving command file 2024-05-22 14:38:59 +02:00
Mikolaj Wielgus fb501ac072 autorouter: encapsulate command history in a `History` object 2024-05-22 01:12:55 +02:00
Mikolaj Wielgus 4a4f18f558 egui,autorouter: implement undo/redo in GUI 2024-05-15 03:40:48 +02:00
Mikolaj Wielgus 8a3bf45fd8 egui: store invoker in state instead of reconstructing it each time 2024-05-13 04:28:13 +02:00
Mikolaj Wielgus 7bcb3926d4 autorouter: put autorouter in new `Invoker` object for Command pattern 2024-05-13 03:20:57 +02:00