Mikolaj Wielgus
12af34d492
layout: make infringables include bends around the source
...
This fixes some of the routing failures due to rule infringements.
2024-02-11 20:38:58 +00:00
Mikolaj Wielgus
d5d2ffd9d8
layout: inflate infringement-testing shapes and bboxes
...
This results in unintentional infringements of linked traces. I'll fix
this in subsequent commits by increasing the number of
2024-02-10 00:41:46 +00:00
Mikolaj Wielgus
b66995b30c
shape,layout: restore and fix bend-seg collision detection
2024-02-08 18:11:34 +00:00
Mikolaj Wielgus
7fdf90b126
layout: fix misalignment of shifted bends
2024-02-08 00:00:24 +00:00
Mikolaj Wielgus
850941715e
router,layout,draw: remove hardcoded widths
2024-02-07 00:00:57 +00:00
Mikolaj Wielgus
fd73531687
layout: store rotation direction as joint order instead of in weights
2024-02-06 05:30:53 +00:00
Mikolaj Wielgus
a395da4740
rules: use net as one of the conditions instead of netclass
2024-02-05 23:57:24 +00:00
Mikolaj Wielgus
17209c2a65
draw,layout: create an interface for accessing conditions
2024-02-05 02:53:31 +00:00
Mikolaj Wielgus
e5ddf47eb3
draw,guide: construct guides from rules
2024-02-03 23:19:47 +00:00
Mikolaj Wielgus
d2ff1826a0
layout: attach `Rules` storing design rules to `Layout`
2024-02-02 23:58:23 +00:00
Mikolaj Wielgus
01d285efb0
layout: move guide, segbend files to layout module
2024-02-01 22:23:04 +00:00
Mikolaj Wielgus
847309adae
geometry: make the R-tree private with read-only ref getter
2024-02-01 00:40:06 +00:00
Mikolaj Wielgus
4be2a0ca73
layout,geometry: move R-tree code to a new file in geometry module
2024-01-31 22:15:20 +00:00
Mikolaj Wielgus
39bd393ff7
geometry: make graph private, encapsulate all mutating usage of it
2024-01-30 19:00:16 +00:00
Mikolaj Wielgus
410b029eb3
geometry: move shape to geometry module
2024-01-30 02:06:22 +00:00
Mikolaj Wielgus
8b1d95491d
layout: move `GeometryIndex` and `GeometryWeight` to own file
2024-01-30 01:51:19 +00:00
Mikolaj Wielgus
43df065120
layout: move connectivity, band, loose to layout module
2024-01-30 00:43:56 +00:00
Mikolaj Wielgus
ca23d45673
geometry: move `Geometry` to a new module that is one level deeper
2024-01-30 00:03:01 +00:00
Mikolaj Wielgus
7f044f018f
layout,geometry: move bend reattachment to `Geometry`
2024-01-29 20:46:13 +00:00
Mikolaj Wielgus
67f985c980
geometry,primitive: move code for finding segs and bends to `Geometry`
2024-01-29 02:25:32 +00:00
Mikolaj Wielgus
684d0be641
geometry,primitive: move more code and narrow typing further
...
We replace all instances of `NodeIndex<usize>` in public interfaces of
`Geometry` except for `.first_rail()`, for which we make a dirty
exception.
We also improve terminology a bit:
- "joint" is renamed to "connection",
- "end" is renamed to "joint",
- "leg" is renamed to "limb".
2024-01-29 01:34:06 +00:00
Mikolaj Wielgus
87705653bd
geometry: use narrower types for returned adjacents
2024-01-28 20:53:36 +00:00
Mikolaj Wielgus
4c3d0062b0
geometry,primitive: move first rail, core, inner, outer to `Geometry`
2024-01-28 18:25:02 +00:00
Mikolaj Wielgus
4bb513ee08
cleanup: remove unused imports and traits
2024-01-28 15:01:13 +00:00
Mikolaj Wielgus
59180cc600
primitive,geometry: move bend shape-making code to `Geometry` too
2024-01-28 14:53:26 +00:00
Mikolaj Wielgus
c855853a79
primitive,geometry: move dot, seg shape-making code to `Geometry`
...
We still need to move the code for bends -- but that's for tomorrow.
2024-01-28 00:35:16 +00:00
Mikolaj Wielgus
d35d8cd8dc
geometry: parameterize `Geometry` with general weights and dot weights
2024-01-27 20:09:13 +00:00
Mikolaj Wielgus
3fe54290c6
geometry: rename geometry submodule to layout, small typing changes
2024-01-27 16:20:04 +00:00
Mikolaj Wielgus
9f42991032
layout,geometry: move some code from `Layout` to new `Geometry` struct
2024-01-27 15:33:17 +00:00
Mikolaj Wielgus
8c1b7d1e7e
geometry: move into own module, move dot, seg, bend to separate files
2024-01-27 13:42:33 +00:00
Mikolaj Wielgus
5d1b3dff9a
primitive: rename "dependents" to "legs"
2024-01-25 21:57:32 +00:00
Mikolaj Wielgus
cded5eda7f
router: calculate lengths and estimate costs for A* search
2024-01-24 00:25:53 +00:00
Mikolaj Wielgus
bc72aa62d0
router: reimplement interactive routing
2024-01-23 18:06:41 +00:00
Mikolaj Wielgus
35d713b5e6
layout: allow moving fixed dots
2024-01-22 23:59:36 +00:00
Mikolaj Wielgus
8bd0f20ee0
primitive: create trait for getting primitives with dependent bbox
...
I'm calling these "dependents" for now, but there may be a better word.
2024-01-20 00:40:56 +00:00
Mikolaj Wielgus
37fa62a4c2
layout,connectivity: add band edges when adding terminating segs
2024-01-18 22:02:02 +00:00
Mikolaj Wielgus
644d648f71
layout: use `.update_edge()` instead of `.add_edge()`
...
We never want to end up with a parallel edge. Lack of edge creation is
likely to trigger an assertion, so a bug is more likely to be
immediately caught this way.
2024-01-18 21:06:06 +00:00
Mikolaj Wielgus
16e6162b74
layout: hide band weights, split out to new band module
2024-01-18 19:14:08 +00:00
Mikolaj Wielgus
afe4c586b5
layout: implement removal of bands
2024-01-18 00:48:04 +00:00
Mikolaj Wielgus
2d5de212d2
primitive: slightly reduce code duplication by calling `.adjacents()`
2024-01-17 11:09:31 +00:00
Mikolaj Wielgus
3978802512
geometry: create new module, "loose", for traversal of loose nodes
2024-01-16 22:30:28 +00:00
Mikolaj Wielgus
46b50439c8
geometry: move wraparoundables to new module
2024-01-16 12:32:51 +00:00
Mikolaj Wielgus
9007b850c4
geometry: rename `Index` to `GeometryIndex`
2024-01-16 01:31:36 +00:00
Mikolaj Wielgus
d9b94742e4
geometry: split loose segs into lone and sequential (seq) types
2024-01-15 15:56:37 +00:00
Mikolaj Wielgus
8f8f47a41d
layout: store component instead of net in weight of each fixed primitive
2024-01-14 14:08:17 +00:00
Mikolaj Wielgus
0c6190e235
cleanup,layout: make connectivity and geometry private and clean up
2024-01-13 22:55:54 +00:00
Mikolaj Wielgus
1af5b96768
deps,graph: split out to new geometry and connectivity graph modules
...
The geometry graph is where the layout's dots, segs, and bends are
stored. The connectivity graph is where information about connected
components and relations between tem (e.g. which ones are connected with
bands) and information common to all band primitives are stored.
This removes dependency on the Slab library. We may go back to it
sometime in the future if we decide to phase out usage of Petgraph's
`StableDiGraph`.
2024-01-13 20:36:25 +00:00
Tomasz Cichoń
9a4e8357e7
deps: add thiserror and anyhow, reduce boilerplate
...
This adds rudimentary error messages and unsilences some errors.
2024-01-13 18:58:20 +01:00
Mikolaj Wielgus
51c02a9f7f
readme: add NLnet and NGI0 banners
...
(using HTML tags to limit logo widths to 200 px)
2024-01-12 11:52:57 +00:00
mikolaj
0554b91dde
readme: add info about NLnet funding
2024-01-04 19:05:42 +00:00