How diodeinc/pcb works
This is a Rust-based PCB design tool whose main user workflow is to describe a circuit in Zener, build the design, and generate KiCad layout files. The repository also includes schematic analysis, manufacturing-data editing and export, DFM checks, visualization, and publishing capabilities. The README establishes the main workflow; source-index references and excerpts support a few internal relationships. Many feature modules were not sampled, so their internal call paths are left unspecified.
Main entry points: parse.rs IPC parser · main.rs PCB CLI · dom.rs IPC document tree · eval.rs Zener evaluation
Components 21
Design and build
- PCB CLI
crates/pcb/src/main.rs - Zener build
crates/pcbc/src/build.rs - Zener evaluation
crates/pcb-zen-core/src/lang/eval.rs - Zener modules
crates/pcb-zen-core/src/lang/module.rs - Schematic model
crates/pcb-sch/src/physical.rs
KiCad and checks
- KiCad layout
crates/pcb-layout/src/lib.rs - Schematic analysis
crates/pcb-kicad-sch/src/analysis.rs - DFM checks
crates/pcb-ipc2581-tools/src/commands/dfm.rs - Footprint alignment
crates/rectify/src/raster.rs
Manufacturing data
- IPC parser
crates/ipc2581/src/parse.rs - IPC document tree
crates/ipc2581/src/dom.rs - IPC data types
crates/ipc2581/src/types/ecad.rs - IPC editing
crates/ipc2581/src/edit.rs - IPC units
crates/ipc2581/src/units.rs - Population editing
crates/pcb-ipc2581-tools/src/commands/population_edit.rs - Assembly reports
crates/pcb-ipc2581-tools/src/assembly/report.rs - Manufacturing exports
crates/pcb-ipc2581-tools/src/manufacturing/export.rs
Publishing and services
- API authentication
crates/pcb-diode-api/src/auth.rs - Project publishing
crates/pcbc/src/publish.rs - Remote sandbox
crates/pcbc/src/remote_sandbox.rs
Other components
- PCB designer
Connections 10
- PCB designer → PCB CLI: runs
README.md - PCB CLI → Zener build: runs build
- PCB CLI → KiCad layout: runs layout
- Zener evaluation → Zener modules: evaluates
crates/pcb-zen-core/src/lang/context.rs - IPC parser → IPC document tree: parses into
crates/ipc2581/src/parse.rs - IPC parser → IPC data types: constructs
crates/ipc2581/src/parse.rs - IPC parser → IPC units: uses units
crates/ipc2581/src/parse.rs - IPC editing → IPC document tree: edits
crates/ipc2581/src/edit.rs - Population editing → Assembly reports: supports reports
- API authentication → Remote sandbox: authenticates