Interchange formats for chip design.
Vlsir defines data schema for integrated circuit (IC) circuits, layouts, and simulations, using Google's Protocol Buffer schema definition language.
The name Vlsir is a merger of VLSI (very large scale integration - a way-outdated chip-world acronym) and IR (intermediate representation - the term every cool-kid copying compiler designers uses nowadays).
All of Vlsir's schema-definitions live in the protos directory.
| Schema | Description |
|---|---|
| Circuit | Circuit / Hardware Descriptions |
| Raw Layout | "Raw Polygon" IC Layout |
| Tetris Layout | "Tetris" Gridded IC Layout |
| Spice | Spice-Class Simulator Interface |
| Utilities | Shared Utilities |
Vlsir defines a data schema, which related projects use in code.
Projects using vlsir can be written in any language with protobuf-compiler bindings -
which includes essentially every popular programming language.
Existing projects have prominently used Python, C++, and Rust. In this repository we have supported bindings
for Python and Rust which can be found in bindings and downloaded from their respective package managers:
| Language | Bindings Package | Compiler |
|---|---|---|
| Python | https://pypi.org/project/vlsir/ | Google protoc |
| Rust | https://crates.io/crates/vlsir | Prost |
The Vlsir repository also serves as home for the Python-language VlsirTools package.
VlsirTools is a collection of tools for working with Vlsir's schema, including:
- Netlisting to industry-standard formats (SPICE, Verilog, etc.)
- Drivers and result-parsers for Spice-class simulators
The repository includes build scripts for Python, Rust, C++, Javascript and Julia bindings, of which only Rust and Python are actively maintained and tested. These can all be built individually with scripts/build_<your-language-here>.sh or with either of the two joint scripts:
build_supported.sh, this builds all supported bindings for use by Vlsir developersbuild_all_recipes.sh, this builds all bindings and is primarily used for testing
To build, run the script below:
git clone [email protected]:Vlsir/Vlsir
cd Vlsir
scripts/build_<build_flavour>.sh
Ongoing, co-developed projects which use vlsir:
| Project | Description | Language |
|---|---|---|
| Hdl21 | Generator-Based Hardware Description Library | Python |
| Layout21 | Multi-Layered Layout-Programming | Rust |
| BFG | Layout Generation for Open-Source FPGAs | C++ |