Mikolaj Wielgus
5d082d81c0
layout: implement `MakePrimitiveShape` for vias
2024-06-09 21:29:03 +02:00
Mikolaj Wielgus
c5148b0cb1
tests: update tht_diode_bridge_rectifier reference data
2024-06-09 20:42:26 +02:00
Mikolaj Wielgus
fc1f7e2613
layout: implement storage for vias
2024-06-09 17:24:12 +02:00
Mikolaj Wielgus
e5829d929a
dsn: don't divide widths and clearances by 100
2024-06-08 23:07:28 +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
98363fbfd1
drawing: remove unnecessary contracts on `&self` methods
2024-06-08 18:28:34 +02:00
Mikolaj Wielgus
19a4766cb5
board,dsn: introduce `MesadataTrait`, an extension of `RulesTrait`
...
The trait's contents aren't implemented yet.
"mesa" is supposed to mean the opposite of "meta". By "mesadata" I don't
mean mere content or payload: I mean data that is stored *inside* or
*under* such content or payload.
I found this meaning of "mesa" -- as opposite of "meta" -- by browsing
somewhere on the internet. Fair chance many classicists would think
poorly of this usage. But I don't care about etymology: I just need a
word to close a lexical gap.
2024-06-08 16:36:21 +02:00
Mikolaj Wielgus
1dc3718159
board: move board to its own directory
2024-06-08 13:37:27 +02:00
Mikolaj Wielgus
cd1e78db6f
tests: perform some undo-redo sanity testing before each test
2024-06-07 19:23:13 +02:00
Mikolaj Wielgus
91480453b3
tests: add 3-pin XLR THT female to THT female test
...
Hardly functional so far.
2024-06-07 02:14:05 +02:00
Tomasz Cichoń
af1bb7069f
dsn: add support of keepouts
...
Includes some ugly hacks to get the deserializer to accept the relevant
structs for now.
2024-06-06 23:31:12 +02:00
Mikolaj Wielgus
5b4f35b57e
tests: add 3-pin XLR THT female to THT female test board
...
Cannot load yet, as the footprint used contains keepout areas for which
we haven't implemented parsing yet.
2024-06-06 21:22:26 +02:00
Mikolaj Wielgus
eea1da604f
tests: keep single-layer and multilayer test data in separate dirs
2024-06-06 14:49:50 +02:00
Mikolaj Wielgus
e574043c2f
tests: move common code to new common module
2024-06-06 02:30:25 +02:00
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
352a96f895
tests: fix single-layer THT diode bridge rectifier test
2024-06-04 14:49:41 +02:00
Mikolaj Wielgus
5eeeb5a004
autorouter: select nodes with pin-layer pairs, not only pins
...
We call these pairs "selectors".
The command file format has been thus changed. I've upgraded the command
files in tests with the following command:
jq ".done?.[].Autoroute |= {selectors: ([.pins.[] | {pin: ., layer: \"F.Cu\"}])}" $FILE | sponge $FILE
Where $FILE is the name of the upgraded command file.
2024-06-04 01:54:10 +02:00
Mikolaj Wielgus
bb6d975dac
autorouter: store layer to layer names map in `Board`
2024-06-03 13:44:09 +02:00
Mikolaj Wielgus
fa8c11fa36
autorouter: move lazy apex accessor to `Board`
2024-06-03 12:46:36 +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
02a5e13e23
tests: add single-layer THT diode bridge rectifier test
2024-06-02 01:52:59 +02:00
Mikolaj Wielgus
662f959ae5
contributing: explain how to enable contracts
2024-06-01 14:18:36 +02:00
Mikolaj Wielgus
765d8495c6
tests: add four 3rd order SMD LC filters test
2024-06-01 00:34:09 +02:00
Mikolaj Wielgus
540d9707dc
autorouter: store a net to netname map in `Board`
2024-05-31 23:13:57 +02:00
Mikolaj Wielgus
7e022aa2cf
sdl2-demo: fix compilation errors
2024-05-31 02:09:11 +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
194383d9b3
ci: remove superfluous `cargo check`
2024-05-25 23:42:13 +02:00
Mikolaj Wielgus
3dd311c5fc
contracts: use `disable_contracts` feature instead of checking channel
2024-05-25 22:46:06 +02:00
Mikolaj Wielgus
9502c05008
ci: build both in stable and nightly Rust
2024-05-25 21:54:48 +02:00
Mikolaj Wielgus
f062e2f34e
contracts: make derive macros do nothing outside nightly channel
...
This allows us to build Topola in stable rust, as our vendored contracts
library fork uses try blocks which haven't been stabilized yet.
2024-05-25 21:52:32 +02:00
Mikolaj Wielgus
93b628ae02
sdl2-demo: fix compile error
2024-05-25 21:23:24 +02:00
Mikolaj Wielgus
09f1e14e45
ci: attempt to install cmake in sdl2_build pipeline
2024-05-25 18:16:42 +02:00
Mikolaj Wielgus
2cb4c5d5f1
ci: add egui and sdl2 build tests
2024-05-25 17:46:37 +02:00
Mikolaj Wielgus
a757576fe3
tests: fix 0603 breakout test by passing a command file
2024-05-25 02:33:10 +02:00
Mikolaj Wielgus
2f8cccea07
ci: build only with nightly for the time being
2024-05-24 23:30:29 +02:00
Mikolaj Wielgus
fd969bcf24
ci: first attempt at build and testing pipeline
2024-05-24 23:28:32 +02:00
Mikolaj Wielgus
06150f5167
autorouter: don't cache nodes in `Selection`
...
This solves the problem of having to use stateful deserialization.
2024-05-23 20:00:43 +02:00
Mikolaj Wielgus
53fa89d02c
egui: implement loading the history (not functional yet)
...
Committing this non-functional and half-baked because loading the
history requires implementing stateful deserialization, which is quite
an effort to implement with Serde, as there are no applicable derive
macros.
2024-05-23 19:34:19 +02:00
Mikolaj Wielgus
02bfe1105b
egui: Implement saving command file
2024-05-22 14:38:59 +02:00
Mikolaj Wielgus
fb501ac072
autorouter: encapsulate command history in a `History` object
2024-05-22 01:12:55 +02:00
Mikolaj Wielgus
8999fcb160
egui: add button to toggle showing ratsnest
2024-05-20 21:15:57 +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
84a1842f3d
egui: add Ctrl+Z and Ctrl+Y key shortcuts for Undo and Redo
2024-05-15 04:05:11 +02:00