Zener is a domain-specific language for designing PCB schematics, built on top of Starlark. This VSCode extension provides comprehensive language support for .zen files, enabling a productive development experience for hardware design.
Features
Syntax Highlighting - Full syntax support for Zener/Starlark code
IntelliSense - Code completion, hover information, and signature help
Diagnostics - Real-time error checking and validation
Go to Definition - Navigate to component and module definitions
Debugging - Step through your designs with the integrated debugger
Requirements
pcb CLI tool - The extension uses the pcb binary for language server functionality
The pcb binary must be available on your PATH or configured via the zener.lspPath setting
Configuration
The extension provides the following settings:
zener.lspPath - Path to the pcb binary (defaults to pcb on PATH)
zener.lspArguments - Additional arguments to pass to the language server
Sandbox Workflows
The Sandbox explorer lets you create a writable registry checkout for the active board package, iterate on registry code locally, and keep the board's pcb.toml pointed at the exact sandbox commits you are using.
Iterate On An Existing Registry Dependency
Use this flow when a board already depends on something in the registry, but you need to change it while continuing board work.
Create a sandbox from the Sandbox explorer with the + button.
Open sandbox files with cmd+k s.
Edit the dependency inside the sandbox, for example its .zen file.
Commit the sandbox changes.
This automatically updates the board's pcb.toml to point at the new sandbox commit for each changed sandbox package.
Repeat editing and committing as you iterate.
Push the sandbox branch and merge it on GitHub when the full set of changes is ready.
Close the sandbox, then bump dependencies to move back to the merged registry version.
Add A New Registry Package And Use It Immediately
Use this flow when you want to create new registry content in a sandbox and start using it from the board before it has been merged.
Create a sandbox from the Sandbox explorer with the + button.
Add the new registry content inside the sandbox.
Run pcb sandbox search to confirm the new package is visible there.
Commit the sandbox changes.
This automatically updates the board's pcb.toml so changed sandbox packages are added as branch-and-rev dependencies.
Start using the new package from the board.
Continue iterating with more edits and commits as needed.
Push the sandbox branch, merge it on GitHub, then close the sandbox and bump dependencies when you are ready to move back to the merged registry version.
Learn More
PCB Repository - Main project repository with CLI tools and examples