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