Commit Graph

132 Commits

Author SHA1 Message Date
Mikolaj Wielgus a02bf1541e autorouter: implement measurement of band length 2024-06-05 23:20:55 +02:00
Mikolaj Wielgus 86d2555b36 autorouter: accessibly store pin-pairs between which routed bands are 2024-06-05 20:26:23 +02:00
Mikolaj Wielgus a80dfc10be autorouter,router: shorten and clarify terminology
Rename "triangulation vertex" to just "trianvertex".
Rename "navigation vertex" to just "navvertex".

The standalone word "vertex" was overused and in some cases confusing.
2024-06-03 12:46:27 +02:00
Mikolaj Wielgus de17adb01c layout: move pin information to a new parent object, `Board` 2024-05-31 01:47:51 +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 a4503a42c6 router: improve error handling -- more error types, remove some unwraps 2024-05-29 23:49:24 +02:00
Mikolaj Wielgus af9cbeba61 router: don't assume start dot to have a net 2024-05-29 16:52:30 +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 4a4f18f558 egui,autorouter: implement undo/redo in GUI 2024-05-15 03:40:48 +02:00
Mikolaj Wielgus 114fb747c8 router: return band index once the routing finishes 2024-05-15 01:45:36 +02:00
Mikolaj Wielgus 1c09483873 autorouter: implement simple undo (untested, not in GUI yet) 2024-05-14 14:22:47 +02:00
Mikolaj Wielgus 4c6fa0e5d3 layout: remove concepts of connectivity, bands, and continents for now
We'll use `UnionFind` where needed for now.
2024-05-13 18:43:42 +02:00
Mikolaj Wielgus a6fb1157e3 egui,tests: fix compilation errors 2024-05-12 01:57:40 +02:00
Mikolaj Wielgus 9ac4c780b5 router: store origin and target in navmesh 2024-05-10 19:54:03 +02:00
Mikolaj Wielgus 83f3245e55 router: exclude same-net nodes from navmesh (except for start and stop) 2024-05-10 01:25:00 +02:00
Mikolaj Wielgus 91f9466d74 autorouter,router: route only single layer at a time
It makes no sense to route multiple layers at once until we implement
automatic via placement, which is going to take a lot of time.
2024-05-07 20:06:54 +02:00
Mikolaj Wielgus eaecb99146 egui: draw the navmesh
This required some considerable rearrangements in `Router`.
2024-05-06 02:35:43 +02:00
Mikolaj Wielgus b82f5417c3 egui: animate routing as it goes, show attempted traces 2024-05-05 12:55:08 +02:00
Mikolaj Wielgus a2c8ae7e70 autorouter: put `Layout` in a mutex 2024-05-04 18:02:34 +02:00
Mikolaj Wielgus 531bc6d22c autorouter: as a starter, route the endpoints of only the first ratline 2024-05-03 01:36:04 +02:00
Mikolaj Wielgus 9c332bdde3 egui: add "Autoroute" button
Not functional yet as I still haven't implemented
`Autorouter::autoroute()`
2024-05-02 18:53:43 +02:00
Mikolaj Wielgus 81f9f82f40 overlay: move overlay to new autorouter module 2024-04-26 02:34:25 +02:00
Mikolaj Wielgus 5ce35a5357 overlay: make ratlines between centers of pads instead of teir dots 2024-04-23 00:56:20 +02:00
Mikolaj Wielgus 8d59242f3f overlay,egui: impl. incomplete ratsnest generation and drawing
For now only doing Delaunay triangulation, then applying minimum
spanning tree (without properly working edge ordering yet).
2024-04-21 19:51:47 +02:00
Mikolaj Wielgus 47b8616a40 triangulation: move out and make independent of layout and drawing 2024-04-20 14:50:17 +02:00
Mikolaj Wielgus 51c6eeea1f router: rename "mesh" to "navmesh"
Clearer name. There will be more kinds of meshes (e.g. the ratsnest).
2024-04-20 14:12:31 +02:00
Mikolaj Wielgus 014aa018a9 router: constructor should return an already prepared mesh 2024-04-20 14:02:52 +02:00
Mikolaj Wielgus fba86ceccd router: operate on `Layout`, not `Drawing` 2024-04-20 00:31:20 +02:00
Mikolaj Wielgus 94c88a51f8 router: impl. more traits for triangulation to allow more algorithms 2024-04-19 14:39:50 +02:00
Mikolaj Wielgus 43f1248a76 geometry: have a common `Shape` object for both primitives and compounds 2024-04-18 15:41:01 +02:00
Mikolaj Wielgus df23ea8398 router: move top-level files to own `router` module 2024-04-14 20:25:01 +00:00