Commit Graph

55 Commits

Author SHA1 Message Date
Tomasz Cichoń 7d9bf1346a dsn: add new parser/writer and .ses export prototype 2024-06-12 13:39:42 +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 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 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
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 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 540d9707dc autorouter: store a net to netname map in `Board` 2024-05-31 23:13:57 +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 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 95674a9a53 dsn: skip dot coincident with preceding dot 2024-05-06 20:48:23 +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 bad487f6af geometry,drawing: rename grouping to compound, node to node weight 2024-04-13 18:51:34 +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 c141dfc735 dsn: implement importing solid polygons 2024-04-06 01:58:51 +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 6a5be3c368 dsn,drawing: remove mistakenly committed incomplete files 2024-03-23 18:50:00 +00:00
Mikolaj Wielgus ef823c1c27 board,layout: rename "layout" to "drawing", "board" to "layout" 2024-03-22 23:23:31 +00:00
Mikolaj Wielgus 4cb429ca6d dsn: handle instance and pin rotations and offsets 2024-03-17 20:16:53 +00:00
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 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ń 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ń 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 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 fd4eb0b4dd egui: implement basic input file selection from dialog
Imported layout is not displayed yet.
2024-03-02 06:54:12 +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