21 Commits

Author SHA1 Message Date
akhilles c680fa9c52 Update TestBench, module docs
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-09-29 17:36:50 -04:00
akhilles 780685382c Add missing PhysicalValue docs
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-09-29 15:58:07 -04:00
akhilles f59e6e0c83 Document metadata() in spec.mdx
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-09-29 15:58:07 -04:00
akhilles 7b67a14953 Add PhysicalValue to spec
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-09-29 15:58:07 -04:00
Akhil Velagapudi ac8434ff42 Board-level configuration (#188)
* Add `builtin.add_board_config`

Sets constraints

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Enable json extension

Useful for debugging

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* More compact config mapping

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Add predefined sizes support to board config

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Make all board config fields optional, add merging

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Add netclass support to board config

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Add stackup support, sexpr library

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Patch stackup on `pcb layout`

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Sync board config by default

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Fix deep_merge

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Document board config feature

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Flatten netclasses

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Add base configurations

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Remove unused _is_new_board

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Move board_config.zen to examples/

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Use pcb-sexpr

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Replace --dont-sync with --sync (default true)

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

---------

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-09-29 15:57:15 -04:00
Akhil Velagapudi dceb75b5f3 Generate warnings if Path() paths don't exist (#160)
* Add Path() to spec

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Raise warning if path does not exist

Related to DIO-375.

Even if the path doesn't exist during initial development, it should not
be checked into the registry in this state.

We can run registry CI with -Dwarnings to catch this.

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Generate warnings if Path() paths don't exist

Even if allow_not_exists, warnings are useful (DIO-375).

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Release should fail if path missing

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

---------

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-09-16 18:12:38 -04:00
Akhil Velagapudi bb0898dbef Add moved() directive (#152)
* Add pcb:sch comments to test board

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Add moved() directive

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Include moved paths in Schematic

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Repair footprints, groups in layout

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Update docs

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Compute remapper data *before* processing positions

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Add warnings if old path exists or new path doesn't

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

* Add snapshot tests for moved()

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>

---------

Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
2025-09-14 21:15:37 -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 0ef3b5d91d Fix docs (#113)
* 1/n: debug docs

* add image

* boop

* beep

* blorp

* blam

* test
2025-08-24 15:41:21 -04:00
Abhinav Reddy 0f3aa77cb3 [DOCS] Fix Docs for Real this Time (#112)
* Add example documentation

* Fix path

* Add tips and notes

* Split tip and note

* Update example.mdx

* Allow layout

* Update example.mdx

* Delete docs/images/Zener_ACRCM.png

* Upload fixed Zener ACRCM and pin hint gif

* Add gif explaining pin hints

* Fix grammar

* Reorder pages

* Update naming

* Use mintlify callouts

* Fix type (CRC -> LRC)

* Reorganize docs into sections

* Make documentation Davide compliant

* Fix broken links

* Add header at the top

* Update docs.json format

* Revert docs.json update

* Change image links
2025-08-24 13:12:02 -04:00
Abhinav Reddy 74e55fce65 [DOCS] Fix Broken Links (#111)
* Add example documentation

* Fix path

* Add tips and notes

* Split tip and note

* Update example.mdx

* Allow layout

* Update example.mdx

* Delete docs/images/Zener_ACRCM.png

* Upload fixed Zener ACRCM and pin hint gif

* Add gif explaining pin hints

* Fix grammar

* Reorder pages

* Update naming

* Use mintlify callouts

* Fix type (CRC -> LRC)

* Reorganize docs into sections

* Make documentation Davide compliant

* Fix broken links
2025-08-24 12:09:50 -04:00
Abhinav Reddy 3515276773 [DOCS] Add Documentation of an Example (#106)
* Add example documentation

* Fix path

* Add tips and notes

* Split tip and note

* Update example.mdx

* Allow layout

* Update example.mdx

* Delete docs/images/Zener_ACRCM.png

* Upload fixed Zener ACRCM and pin hint gif

* Add gif explaining pin hints

* Fix grammar

* Reorder pages

* Update naming

* Use mintlify callouts

* Fix type (CRC -> LRC)

* Reorganize docs into sections

* Make documentation Davide compliant
2025-08-24 11:30:53 -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
Davide Asnaghi 9a96e2e5aa [DOCS] theme (#60)
* add diode theme

* add vscode links

* add vscode features

* advanced install
2025-08-05 16:50:40 -04:00
Lenny Khazan f702b18a75 Update docs (#53) 2025-07-30 13:02:08 -04:00
Lenny Khazan 9f65ebc80a More robust VSCode schematics viewer (#36)
* wip

* RemoteFetcher

* refactor load logic

* update bundle

* updates

* cleanup

* fixes

* skip on windows

* remove unused

* Add sidebar (non-functional for now)

* Misc fixes and speed

* fix for misaligned first-layout

* fix unnamed pins

* remove debugging

* Add edge labels

* net symbol support

* multiple net symbols

* fix eslint

* Pass symbol across module boundary

* Add new Symbol("library.kicad_sym:SYM") syntax

* update spec

* update snaps
2025-07-20 15:04:49 -04:00
Davide Asnaghi e7a71f1fdb [MODULE] resolve workspace loads (#19)
* use load resolving with modules

* local package resolution

* fix spec

* update snapshots

* remove unnecessary code

* move to snapshot tests

* revert eval errors

* canonical cache

* make tests work on windows

* refresh snap

* do not shadow alias

* fix: Add serial_test to prevent race conditions in module loading tests

- Add serial_test dependency to pcb-zen crate
- Mark tests that use package aliases with #[serial_test::serial]
- This prevents race conditions with the global ALIAS_CACHE when tests run in parallel
- Fixes test failures on Ubuntu where path canonicalization differs from macOS
2025-07-06 23:34:42 -07:00
Lenny Khazan ba3fa631f1 Simplify spec (#16) 2025-07-06 20:10:59 -04:00
Davide Asnaghi f1a972ee59 kicad test (#18)
* add test for kicad

* cache dir in snapshots
2025-07-05 18:06:02 -04:00
Lenny Khazan d6ff024281 Update symbol handling, support gitlab packages (#14)
* Add Symbol() primitive

* Add print output to snaps

* gitlab support

* Add gitlab support, handle unnamed pins

* Add @kicad-symbols alias

* cargo fmt

* fmt

* update snap
2025-07-05 00:10:45 -04:00
Lenny Khazan 77be2a75b7 update docs 2025-07-02 16:38:06 -04:00