Mikolaj Wielgus
d58bff85fe
dsn: don't flip y coord on import, do so when rendering
2024-03-17 13:58:29 +00:00
Mikolaj Wielgus
cc7b3ac875
dsn: flip pads of components placed on the back side
2024-03-17 13:58:29 +00:00
Mikolaj Wielgus
14f3234b7b
dsn: implement crude polygon importing
...
sdl2-demo now stack-overflows when zooming-in too much, probably for a
reason related to pathfinder.
2024-03-17 13:58:29 +00:00
Mikolaj Wielgus
fe89226072
dsn: implement basic import of paths in pads
2024-03-17 13:58:29 +00:00
Mikolaj Wielgus
451d4da7a6
dsn: crudely import rect outlines
2024-03-17 13:58:26 +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
d8e128e81a
egui: actually load and display the layout
2024-03-09 17:03:05 +00:00
Mikolaj Wielgus
f8892f64a7
dsn: make `DsnDesign` don't own the constructed `DsnRules` object
2024-03-09 13:12:58 +00:00
Tomasz Cichoń
b661047ca8
sdl2-demo: fix envelope/mesh sizes
2024-03-08 13:07:46 +01:00
Tomasz Cichoń
164a2230ee
dsn: encapsulate de::Deserializer, reorganize error types
2024-03-08 12:40:06 +01:00
Tomasz Cichoń
12574712a4
dsn: remove temporary scaling factor
...
The binary targets have zooming and no longer need it for display.
2024-03-08 10:12:31 +01:00
Tomasz Cichoń
23fe001647
tests: add export of prerouted_lm317_breakout
...
The file can now be parsed and partially loaded into Layout.
2024-03-08 09:09:38 +01:00
Tomasz Cichoń
fb6922a5e5
sdl2-demo: add zooming/panning
2024-03-08 08:55:30 +01:00
Tomasz Cichoń
ada12b32fd
dsn: fix import bug misplacing shapes
2024-03-08 06:56:17 +01:00
Tomasz Cichoń
137026301c
dsn: make import skip rather than panic on unsupported shapes
...
This should help debug the infringements happening when trying to load prerouted_lm317_breakout.
2024-03-08 06:00:17 +01:00
Tomasz Cichoń
6bbbc368c6
dsn: refactor the parser/serializer to allow enums
...
This cleans up and defines new types in structure.rs as well.
2024-03-08 05:06:00 +01:00
Mikolaj Wielgus
8a56a16528
egui: implement zooming in/out to a point
2024-03-05 20:02:16 +00:00
Mikolaj Wielgus
4959f3512b
egui: implement moving the canvas horizontally and vertically
2024-03-05 18:51:17 +00:00
Mikolaj Wielgus
b43111030e
egui: implement basic interactive zooming
2024-03-05 12:56:44 +00:00
Mikolaj Wielgus
4689bc8e37
dsn: layout may contain multiple planes
2024-03-04 11:07:34 +00:00
Mikolaj Wielgus
803d8edf94
dsn: count lines from 1, not 0
2024-03-04 10:49:22 +00:00
Mikolaj Wielgus
ec799fb107
dsn: display line, column when printing error
2024-03-03 10:53:42 +00:00
Mikolaj Wielgus
e50fb26bdd
egui: make the WASM port actually work
2024-03-02 16:09:01 +00:00
Mikolaj Wielgus
fd4eb0b4dd
egui: implement basic input file selection from dialog
...
Imported layout is not displayed yet.
2024-03-02 06:54:12 +00:00
Mikolaj Wielgus
d5d26cdaeb
tests: add prerouted LM317 breakout board project for testing
...
Will add some tests for it in later commits.
2024-03-01 11:13:04 +00:00
Tomasz Cichoń
88180f5f33
dsn: add the ability to load planes, polygons and rotated pins
2024-03-01 03:52:28 +01:00
Tomasz Cichoń
de21bbaa8e
dsn, rules: fix import bugs, update test file
2024-02-29 22:12:37 +01: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
Tomasz Cichoń
88c353896c
dsn: fix net assignment for imported pins
2024-02-27 04:39:39 +01: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
bbc89a3c94
dsn: implement loading pins from components
2024-02-24 05:35:07 +00:00
Mikolaj Wielgus
5ba56963ee
dsn,tests: use pins instead of vias in test .dsn file
2024-02-23 23:07:39 +00:00
Tomasz Cichoń
786953787f
dsn: add loading of assignments of pins to nets
2024-02-23 06:30:10 +01:00
Tomasz Cichoń
2014be1004
dsn: add loading of simple images containing pins
2024-02-23 03:52:07 +01:00
Tomasz Cichoń
53fd88f408
design: make layout import resolve via names
2024-02-23 03:41:07 +01: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
Tomasz Cichoń
3f6bad2ed6
dsn, sdl2-demo: replace hardcoded layout with basic .dsn file
2024-02-21 19:22:05 +01:00
Mikolaj Wielgus
08c03a0e77
egui: implement painting of shapes
2024-02-21 16:29:58 +00:00
Mikolaj Wielgus
f10f7b7ab4
cargo: rename topola-gui to topola-egui, minor refactoring
2024-02-20 04:18:19 +00:00
Mikolaj Wielgus
f2c2dca4be
cargo: introduce topola-gui binary crate
2024-02-19 03:17:38 +00:00
Mikolaj Wielgus
171faec010
cargo,sdl2-demo: move the SDL2 demo to its own module behind a feature
2024-02-19 03:17:03 +00:00
Mikolaj Wielgus
cf8a317f24
layout: remove inserted segbend if updating bows fails
2024-02-15 16:47:41 +00:00
Mikolaj Wielgus
4365284d47
layout: don't make abutters infringable as we don't need that anymore
...
Since we switched from having a long infringables list to using an
epsilon in intersection detection.
2024-02-15 04:01:55 +00:00
Mikolaj Wielgus
ff19c252c1
shape: don't inflate seg front and back to prevent false infringements
2024-02-15 03:28:12 +00:00
Mikolaj Wielgus
6fa6ec7527
layout: use epsilons instead of infringable lists to evade abutters
2024-02-15 02:35:25 +00:00
Mikolaj Wielgus
2197017f54
layout: terminology improvements
...
- "connected" is renamed to "joined" (more local term),
- primitives whose clearance area neighbors another's are now called
"abutters",
- primitives whose geometries depend on a bend are now called
"posteriors" of said bend.
2024-02-13 04:45:39 +00:00
Mikolaj Wielgus
e1f3d3ede4
layout: move neighborhood-collecting code to a new collect module
2024-02-13 00:46:12 +00:00
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