Skip to content

Commit f05790d

Browse files
authored
Basic version of pcb import for kicad projects (#502)
* Add `pcb import` * Add kicad import spec * Add stackup import + codegen * Tolerate extra footprints in layout * Add netlist extraction * Extract schematic + symbol sexprs * Extract layout information * Generate sym + fp component files * Generate component .zen files * Generate component module imports * Sanitize names better * Plumb modules in generated board .zen * Add sync hooks to layout * Sync, dnp, skip_bom, skip_pos info * Sum refactoring * Fix NC net handling * Structure in phases * Extract schematic tree structure * Derive hierarchy plan * Extract "placed" symbols, generate modules * Generate full module hierarchy * Tolerate unmanaged footprints * Add NotConnected support * Passive promotion * Denser codegen * Address PR comments * Handle more boards * Make component package generation all-or-nothing * Add more generic packages * Rebase * Cleanup * Model coordinate transform * Parse more pin data * Infer Power/Ground * Split generate into multiple modules * Add better footprint canonicalization * Disambiguate duplicate KiCad pin names via pin_defs * Address PR comments * Fix reused-sheet components * `pcb import <path-to-project.kicad_pro> <output-dir>` * Create portable archive of kicad project on `pcb import` * Remove dead template file * Remove unnecessary scanning of kicad_pcb files * Show errors last on `pcb import` * Preserve kicad project name in zener * Make parity blocking issues more obvious * Separate parity issues table, address PR comments * Fix rebase issues * Remove thin wrapper APIs in pcb-kicad
1 parent 4916862 commit f05790d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+13603
-424
lines changed

Cargo.lock

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ homepage = "https://github.com/diodeinc/pcb"
1010
authors = ["Diode Computers, Inc. <founders@diode.computer>"]
1111

1212
[workspace.dependencies]
13+
glam = "0.31.0"
1314
starlark = { git = "https://github.com/diodeinc/starlark-rust", rev = "e80bd650" }
1415
starlark_map = { git = "https://github.com/diodeinc/starlark-rust", rev = "e80bd650" }
1516
starlark_derive = { git = "https://github.com/diodeinc/starlark-rust", rev = "e80bd650" }
@@ -28,6 +29,7 @@ similar = "2.7.0"
2829
ipc2581 = { path = "crates/ipc2581" }
2930
pcb-command-runner = { path = "crates/pcb-command-runner" }
3031
pcb-eda = { path = "crates/pcb-eda" }
32+
pcb-component-gen = { path = "crates/pcb-component-gen" }
3133
pcb-layout = { path = "crates/pcb-layout" }
3234
pcb-sch = { path = "crates/pcb-sch" }
3335
pcb-zen = { path = "crates/pcb-zen" }
@@ -70,7 +72,6 @@ open = "5"
7072
path-slash = "0.2.1"
7173
termtree = "0.5"
7274
regex = "1.11.0"
73-
scan_fmt = "0.2.6"
7475
natord = "1.0.9"
7576
serde = { version = "1.0", features = ["derive"] }
7677
serde_json = "1.0"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[package]
2+
name = "pcb-component-gen"
3+
version = { workspace = true }
4+
edition = { workspace = true }
5+
repository = { workspace = true }
6+
homepage = { workspace = true }
7+
authors = { workspace = true }
8+
description = "Generate Zener component modules from EDA artifacts"
9+
10+
[dependencies]
11+
anyhow = { workspace = true }
12+
deunicode = { workspace = true }
13+
minijinja = { workspace = true }
14+
pcb-eda = { workspace = true }
15+
serde_json = { workspace = true }

0 commit comments

Comments
 (0)