Commit Graph

83 Commits

Author SHA1 Message Date
Mikolaj Wielgus 008dcfeca0 geometry: store layer in `usize`, not `u64` 2024-06-14 04:58:52 +02:00
Mikolaj Wielgus cff6b5aaf6 cleanup: cargo fix, cargo fmt 2024-06-13 13:38:12 +02:00
Mikolaj Wielgus f91dadf4d3 drawing,layout,board: categorize methods as possibly infringing and not 2024-06-11 23:57:47 +02:00
Mikolaj Wielgus 9e65a28c3d drawing: cosmetic renamings and rearrangements 2024-06-11 13:53:43 +02:00
Mikolaj Wielgus 8c9a13e712 layout: use inclusive range to describe via layers 2024-06-10 23:51:15 +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 5d082d81c0 layout: implement `MakePrimitiveShape` for vias 2024-06-09 21:29:03 +02:00
Mikolaj Wielgus fc1f7e2613 layout: implement storage for vias 2024-06-09 17:24:12 +02:00
Mikolaj Wielgus 7a02877eb4 board,dsn: move layer and net name bidirectional lookup to `Mesadata` 2024-06-08 21:39:25 +02:00
Mikolaj Wielgus a02bf1541e autorouter: implement measurement of band length 2024-06-05 23:20:55 +02:00
Mikolaj Wielgus fa8c11fa36 autorouter: move lazy apex accessor to `Board` 2024-06-03 12:46:36 +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 f03545124f autorouter: keep track of clicked pins
Pin names provide us stable references that we can use to replay actions
later. We'll use this information to serialize the selection.
2024-05-19 04:37:26 +02:00
Mikolaj Wielgus 530f81557a layout: keep track of node pins
For the time being we're storing pin names in a hashmap with nodes as
keys. We need to know which node belongs to which pin because pins
provide stable identifiers for continents (connected components) that
we need for replayable command files.
2024-05-17 02:22:48 +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 b3f36d22b4 layout: fix apex detection - these can be joined with loose segs 2024-05-11 02:39:50 +02:00
Mikolaj Wielgus 63561e6a4a layout: make apices have the same net as teir zones 2024-05-05 21:39:17 +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 5664b73494 layout: implement creation and return of the apex
Apex is the dot positioned at the center of a zone that is used to
terminate and tie any band ending in the zone.
2024-05-02 01:21:00 +02:00
Mikolaj Wielgus ea22ba705c layout: create `Zone` struct for accessing zone properties 2024-05-01 20:57:49 +02:00
Mikolaj Wielgus 6f9015106d overlay: separately triangulate each net
The way this is done is ineffective of course and we'll have to optimize
it later.
2024-04-24 03:01: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 e5bae501ad geometry: make compound weights accessible from `CompoundManagerTrait` 2024-04-18 13:58:04 +02:00
Mikolaj Wielgus f2569c5167 layout: alias `Node` to not require generic parameters 2024-04-17 21:06:55 +02:00
Mikolaj Wielgus 4a9322d694 overlay: new module, impl. basic mouse selection of primitives
Only check for intersection of the AABB as a starter.
2024-04-16 00:21:18 +00:00
Mikolaj Wielgus df23ea8398 router: move top-level files to own `router` module 2024-04-14 20:25:01 +00:00
Mikolaj Wielgus bad487f6af geometry,drawing: rename grouping to compound, node to node weight 2024-04-13 18:51:34 +00:00
Mikolaj Wielgus 13dd000dba geometry,layout,drawing: add accessor for node's groupings 2024-04-12 23:50:47 +00:00
Mikolaj Wielgus 9feb32955c drawing,layout: move zones upwards, from drawing to layout
This generally largely drawings from groupings. We need this because it
will be easier to handle all groupings on the level of layout as
continents and bands, which are groupings too, are to be tracked there.

There's a lot of rough edges when it comes to typing and contracts.
2024-04-11 18:07:08 +00:00
Mikolaj Wielgus 8f9abae921 drawing: rename remnants of the s/layout/drawing rename 2024-04-04 13:50:39 +00:00
Mikolaj Wielgus e23f7de07e drawing: use `None` instead of negative values to denote no net 2024-03-24 16:34:50 +00:00
Mikolaj Wielgus ef823c1c27 board,layout: rename "layout" to "drawing", "board" to "layout" 2024-03-22 23:23:31 +00:00
Mikolaj Wielgus 5a3ed6adab layout: don't fail on infringement when adding fixed primitives 2024-03-15 21:21:29 +00:00
Mikolaj Wielgus 74d10f4a9e layout,sdl2-demo,egui: basic support for displaying two layers 2024-03-14 21:51:29 +00:00
Mikolaj Wielgus 5a0ea94a87 geometry: make shape bboxes occupy only one layer instead of all 2024-03-14 19:17:38 +00:00
Mikolaj Wielgus cf01cdaea5 geometry: store the bbox in the rtree instead of caching the shape 2024-03-14 17:01:00 +00:00
Mikolaj Wielgus 6965177e78 layout: access shape via layout instead of getting it from a cache 2024-03-14 13:59:22 +00:00
Mikolaj Wielgus 93381f39fb geometry: store some layer data in `GeometryWithRtree` 2024-03-14 13:27:31 +00:00
Mikolaj Wielgus 9730ff215e layout: inherit `GetLayer` via enum_dispatch macro 2024-03-14 00:52:57 +00:00
Mikolaj Wielgus 45593c9e7a dsn,layout: store layer in weights 2024-03-11 22:34:14 +00:00
Mikolaj Wielgus 2f6b40410c board: make layout private
Also add board/ directory, as I forgot to add it in the previous commit.
2024-02-29 02:28:15 +00:00
Mikolaj Wielgus 8d55fbc837 layout: move connectivity to new superordinate `Board` struct
This is very rudimentary (merely compiles and doesn't panic). Routing is
unlikely to work at the moment. I'll be fixing all this in subsequent
commits.
2024-02-28 09:24:49 +00:00
Tomasz Cichoń b53dc62df3 rules: implement `RulesTrait` for rules imported from DSN 2024-02-28 04:17:59 +01:00
Mikolaj Wielgus bec701dbc9 Revert "layout: encapsulate weight geometrical datas in new "geodata" structs"
This reverts commit a3ba8c9ba9.

This wasn't the right approach. Instead, we need a superordinate struct
that will manage the connectivity without layout knowing anything about
it.
2024-02-27 06:19:35 +00:00
Mikolaj Wielgus a3ba8c9ba9 layout: encapsulate weight geometrical datas in new "geodata" structs 2024-02-26 23:39:10 +00:00
Mikolaj Wielgus 7f69ffddf9 geometry: move geometry module to from layout to root
As we'll be creating a deeper hierarchy of modules subordinate to
layout, we need to keep the module full paths short to prevent tem from
growing uncontrollably.
2024-02-26 19:16:40 +00:00
Mikolaj Wielgus c005337ea8 layout: rename "component" to "continent"
The term "component" has already a meaning in electronics, and moreover
the term "connected component" from graph theory may apply to more
things (e.g. landmasses made of continents connected with bands may
collectively be considered connected components too).
2024-02-22 21:23:01 +00:00
Mikolaj Wielgus 473a877845 dsn: encapsulate DSN structure in new `DsnDesign` struct
Using a placeholder instead of rules and disabled routing for now. Also
did some formatting corrections.
2024-02-22 04:49:55 +00:00
Mikolaj Wielgus cf8a317f24 layout: remove inserted segbend if updating bows fails 2024-02-15 16:47:41 +00:00