akhilles
c5460aed62
Revert unintentional change
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-29 15:58:07 -04:00
akhilles
3e009eef80
Add better type checking, switch to method-based API
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-29 15:58:07 -04:00
Akhil Velagapudi
eeabb9dcca
Release v0.2.0 ( #184 )
2025-09-25 13:48:11 -04:00
Akhil Velagapudi
92c512e21d
Release v0.2.0-prerelease.12 ( #181 )
2025-09-23 23:27:50 -04:00
Akhil Velagapudi
83bb82e474
Add canonicalize cache to default file provider ( #179 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-23 18:05:13 -04:00
Akhil Velagapudi
a857f2b5c6
Release v0.2.0-prerelease.11 ( #173 )
2025-09-22 11:21:40 -04:00
Akhil Velagapudi
9ab57fd8f4
Release v0.2.0-prerelease.10 ( #168 )
2025-09-19 17:16:45 -04:00
Akhil Velagapudi
5ad3c7effb
[ENG-1] Add language-level physical values to do math ( #161 )
...
* Add PhysicalValue Rust + Starlark types
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add more units
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add Voltage
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add physical value math
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Moar units
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Macroify
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Moar unit math stuff
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Move define_physical_unit macros
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add physical relationship tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add __str__
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Parse celsius, fahrenheit temps
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Hijack units.zen and swap with builtins
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add builtin
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* For unsupported ops, output dimensionless
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix starlark-rust dep
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix __str__ type annotation
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Remove unused record fields
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Remove unused imports in tests/path.rs
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add physical value to schematic
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Make physical value str conv lossless
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add back __{}__ typed properties in pcb
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add with_tolerance, with_unit
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add physical value <> string math
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Allow all bin ops on custom type
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Parse "ohms"
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add dimensioned units
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add dimensionless casting, allow with_unit(None)
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Allow constructing physical value with just number pos arg
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Bump starlark-rust
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-19 17:12:41 -04:00
Akhil Velagapudi
142256987f
Publish pcb cli from main ( #167 )
...
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-19 16:42:02 -04:00
Desmond Mehta
803b5d5ebb
update ruff v0.4.10 -> 0.13.0 to fix nix flake ( #158 )
2025-09-15 18:10:59 -04:00
Akhil Velagapudi
df4a534376
Release v0.2.0-prerelease.9 ( #155 )
2025-09-15 15:09:13 -04:00
Akhil Velagapudi
0745f379c7
Add pcb sch position loading/saving to wasm, lsp ( #147 )
...
* Add pcb sch position loading/saving to wasm, lsp
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix ordering
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-10 14:08:00 -04:00
Akhil Velagapudi
0ca2f604ba
Replace buildifier with ruff fmt ( #146 )
...
buildifier doesn't support f-strings, which we use in a bunch of places.
We also run fmt after `pcb upgrade`, and it's a bit annoying that it
fails due to a buildifier error.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-08 23:22:10 -04:00
Akhil Velagapudi
0d27d10293
Release v0.2.0-prerelease.8 ( #143 )
2025-09-05 23:30:09 -04:00
Akhil Velagapudi
0c2c87c338
[DIO-352] Add TestBench() support ( #129 )
...
* Add TestBench
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add checks
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add net -> ports dict
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add port -> pin dict
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Provide component properties to check fns
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update spec, fix spans on check failures
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use check(), error() to fail checks instead of return value
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add ModuleView to group check fn args
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add component_values field, expose more typed values
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fully switch to ComponentValues in check fn
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use ModuleValue directly
Delete ModuleView
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add at() support for module which can return sub-module or component
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Rename testbench.rs -> test_bench.rs
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Move bench_test_cases to test-workspaces/bench
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Print "checks passed" log to eprintln
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Make .nets and .components functions
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add schematic to graph conversion, path finding
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add external net support to path finding
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Don't use bool ret for matchers
Use error(), check()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add path.matches()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add samples
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Moar samples
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update spec.mdx
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Consolidate seq matchers test code
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add suppress_errors
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add lm5163q1 example
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add test_cases, inputs arg to check fns
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update bmi270 example to use path.matches()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use more path.matches()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add span for path.matches()
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add pcb test
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Print stuff only to stderr
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Output test results in TAP or json
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* "testbench" -> "test_bench"
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add table output format for pcb test
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Tolerate non-callable inputs to "checks"
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add tuple checks support for renaming check fns
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add snapshot tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Make max_depth optional
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-09-04 22:30:30 -04:00
Lenny Khazan
b8501ad511
bump version ( #130 )
2025-08-30 09:30:47 -04:00
Akhil Velagapudi
64725d3768
Release v0.2.0-prerelease.6 ( #121 )
2025-08-26 12:28:28 -07:00
Yishen Chen
b4aa47b114
Add pcb sim to setup spice simulation from schematics ( #56 )
2025-08-26 12:06:04 -04:00
Akhil Velagapudi
9ae327b645
Add pcb tag ( #117 )
...
* Add `pcb tag`
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add `--force` flag to `pcb tag`
Also, remove the version ordering validation.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-25 22:45:58 -07:00
Akhil Velagapudi
9549fca231
[DIO-334] Switch to <board_name>/<version> tags ( #102 )
...
* Switch to `<board_name>/<version>` tags
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix bug where .source.zip wasn't used for source-only releases
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Make tag -> board matching case-insensitive
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Sanitize cli version
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add git helpers to sandbox
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-22 09:31:14 -07:00
Akhil Velagapudi
9a1930c2c5
pcb cli-level testing (#96 )
...
* Add sandbox
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add dir snapshotting
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add branch support, snapshot_dir
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add snapshot testing of stdout/stderr
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Only use local files for workspace root detection
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add bom, release tests
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add pcb vendor snapshot test
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Sanitize linux tmp dir paths
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Ignore some tests on Windows
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Reuse dep fetching code from pcb-zen
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix download race condition
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Bump lock file
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Specify default branch
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Suppress 3d export logs to stdout
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-21 13:52:38 -07:00
Lenny Khazan
9d75b20b24
bump version ( #97 )
2025-08-21 15:30:27 -04:00
Akhil Velagapudi
1ee83c6e7e
Initial implementation of interface subclasses + auto-promotion ( #89 )
...
* Add serialize(), deserialize() builtins for debugging
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add field(), __post_init__ to interface()
Also, add better print() behavior.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add interface/net promotion
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Remove Cargo.toml patch
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix example
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix test workspace
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add interface arg type checking
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Update spec.mdx
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Allow `using(Net)`
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-20 09:27:39 -07:00
Lenny Khazan
d554a4f281
Bump to 0.2.0-prerelease.4 and add --version ( #85 )
2025-08-19 16:55:59 -04:00
Lenny Khazan
f9a6743428
0.2.0-prerelease.3 ( #82 )
...
* bump version
* Bump version: 0.2.0-prerelease.3
2025-08-18 18:32:06 -04:00
Akhil Velagapudi
58549fb924
[DIO-301] Add pcb vendor, pcb build --offline ( #72 )
...
* Update Cargo.lock
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add pcb vendor
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Copy pcb.toml to release if it exists
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use vendor dir in resolver
Add --offline support to build, layout.
Standardize behavior of find_workspace_root. Most of the callsites would
fallback on parent dir of target .zen file. We should just do that
universally to reduce conditional code paths.
Add an option to the resolve to not use the vendor dir in case that's
useful in some cases.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Drop vendor alias
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Only support pcb vendor in pcb.toml workspaces
Attempting to resolve a common workspace root from multiple zen files in
a dir without pcb.toml just got way too complicated. We can add support
for this in the future if needed.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Canonicalize zen_path
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-15 12:07:51 -07:00
Akhil Velagapudi
1636bc18f7
[DIO-300] Add pcb release command ( #69 )
...
* Add pcb release command
Intentially spartan in terms of flags/arguments. All that's needed is
the path to the .zen file.
To test:
cargo run -- release crates/pcb/test-workspace/boards/TestBoard.zen
Implemented:
- Workspace root detection (even without pcb.toml)
- Git-based versioning (e.g. tag > commit hash > dirty commit hash)
- Zen source files copied into release dir (release-dir/src)
- Dependencies are vendored into release dir (release-dir/src/vendor)
- Unmatched bom is generated into release dir (release-dir/bom)
- KiCad layout dir is copied into release dir (release-dir/layout)
- Metadata file is generated into release dir (release-dir/metadata.json)
- Generated artifacts are stored in .pcb/ dir (for now) and not uploaded
TODO:
- Upload the release bundle to API server
- Add a --dry-run to generate release bundle but not upload (similar to
cargo)
- Use the vendor/ dir for dependency resolution for deterministic builds
- Add pcb vendor subcommand, --offline flag for build/layout
- Add more release artifacts (e.g. gerbers, odb, etc.)
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Fix windows compat
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add support, test-coverage for workspace-relative loads
Assume that pcb.toml is needed for workspace-relative loads
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use workspace root .pcb dir for staging releases
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-14 18:46:43 -07:00
Akhil Velagapudi
f20ac95f64
[DIO-298] [DIO-299] Add pcb bom command to generate unmatched bom ( #66 )
...
* Add structured, unmatched BOM export command
Run using `pcb bom <path/to/zen> -o json`
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Test bom command in CI
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Bump stdlib in examples from v0.2.0 to v0.2.2
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Remove default_multiplier, use struct for group key
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use PhysicalValue to do less string parsing
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Add alternatives to group key
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
* Use DynamicFullWidth for the comfy table
Attempts to fit the table within terminal width.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-14 12:13:20 -07:00
Akhil Velagapudi
a41fd301eb
Parse unit records as AttributeValue::Physical ( #68 )
...
Reduce unnecessary conversions to/from strings.
Use rust_decimal for fixed precision.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com >
2025-08-14 10:21:10 -07:00
Lenny Khazan
e48c6d9286
update prerelease ( #48 )
2025-07-24 14:49:04 -04:00
Lenny Khazan
891f4698b1
update version to 0.2.0-prerelease.1 ( #42 )
2025-07-22 13:53:31 -04:00
Lenny Khazan
ad6f0ded3a
Refactor load logic into pcb-zen-core ( #33 )
...
* wip
* RemoteFetcher
* refactor load logic
* update bundle
* updates
* cleanup
* fixes
* skip on windows
* remove unused
2025-07-18 15:12:53 -04:00
Lenny Khazan
acff75845c
Schematics Viewer v2 ( #23 )
...
* Support net symbols
* Run renderer tests in CI
* renderer -> LayoutEngine
* wip
* rename
* add examples
* support symbol "extends"
* start reworking layout engine + snapshot tests
* add examples
* wip add nets
* Add signature to ModuleValue
* tweaks
* per-component net labels
* movable
* WIP with ELK
* wip libavoid
* misc fix
* better
* betterer
* improvements
* more
* update
* junction detection
* better
* snapping and stuff
* fix re-rendering
* more better
* more
* cargo fmt
* update bg
* eslint
* cleanup, tests
2025-07-12 13:24:55 -04:00
Davide Asnaghi
44891494ef
[FMT] implement formatter ( #25 )
...
* add pcb fmt
* unify pcb path in extension
* change the name of the extension
* bundle buildifier
* better path res
* fix clippy
* recursive
* fix format
* fix one more
* cargo info
* fix format on save
2025-07-10 16:24:25 -07:00
Lenny Khazan
db6e5f4cf2
vendor openssl ( #11 )
2025-07-03 18:45:37 -04:00
Lenny Khazan
f75787dbf3
Standardize crate metadata ( #10 )
2025-07-02 23:40:29 -04:00
Lenny Khazan
143633eb14
Starlark -> Zener ( #8 )
2025-07-02 17:25:45 -04:00
Lenny Khazan
e852477546
Initial release ( #5 )
...
* Initial release
* cargo-dist
* build and test CI
* update ubuntu workflow
* fmt
* ubuntu: install deps
* clippy: 0.1.88 fixes
* format
* install clippy
* Update README.md
* Don't run cargo-dist on PRs
2025-07-01 04:06:08 -04:00