A dependency management tool for hardware projects.
Rust
393
1,135 commits
updated Sep 22, 2026
A dependency management tool for hardware design projects.
Bender manages HDL package dependencies across Git repositories and local paths, resolves compatible versions, records the exact result in Bender.lock, and collects ordered source sets for downstream tools. It is designed to fit existing hardware flows rather than impose a registry, directory layout, or simulator choice.
Bender.lock.Install Bender:
curl --proto '=https' --tlsv1.2 https://pulp-platform.github.io/bender/init -sSf | sh
Create a package:
mkdir my_ip
cd my_ip
bender init
Add a dependency to Bender.yml:
dependencies:
common_cells: { git: "https://github.com/pulp-platform/common_cells.git", version: "1.21.0" }
Resolve dependencies and generate a compile script:
bender update
bender script vsim > compile.tcl
vsim -do compile.tcl
Bender packages are built around three files:
Bender.yml: Declares package metadata, dependencies, sources, targets, and workflow configuration.Bender.lock: Records the exact resolved dependency revisions for reproducible builds.Bender.local: Stores local overrides, for example when developing a dependency in-place.In a typical workflow, you edit Bender.yml, run bender update to resolve dependencies, use bender checkout to download the revisions pinned in Bender.lock, and generate tool inputs with bender script.
The full documentation lives at pulp-platform.github.io/bender/.
Bender is licensed under either of:
at your option.
Bender is maintained by the PULP Platform at ETH Zurich and the University of Bologna.
(top 30 of 34)
Rust
91.4%
C++
3.8%
Shell
3.6%
A dependency management tool for hardware projects.
Rust
393
1,135 commits
updated Sep 22, 2026
A dependency management tool for hardware design projects.
Bender manages HDL package dependencies across Git repositories and local paths, resolves compatible versions, records the exact result in Bender.lock, and collects ordered source sets for downstream tools. It is designed to fit existing hardware flows rather than impose a registry, directory layout, or simulator choice.
Bender.lock.Install Bender:
curl --proto '=https' --tlsv1.2 https://pulp-platform.github.io/bender/init -sSf | sh
Create a package:
mkdir my_ip
cd my_ip
bender init
Add a dependency to Bender.yml:
dependencies:
common_cells: { git: "https://github.com/pulp-platform/common_cells.git", version: "1.21.0" }
Resolve dependencies and generate a compile script:
bender update
bender script vsim > compile.tcl
vsim -do compile.tcl
Bender packages are built around three files:
Bender.yml: Declares package metadata, dependencies, sources, targets, and workflow configuration.Bender.lock: Records the exact resolved dependency revisions for reproducible builds.Bender.local: Stores local overrides, for example when developing a dependency in-place.In a typical workflow, you edit Bender.yml, run bender update to resolve dependencies, use bender checkout to download the revisions pinned in Bender.lock, and generate tool inputs with bender script.
The full documentation lives at pulp-platform.github.io/bender/.
Bender is licensed under either of:
at your option.
Bender is maintained by the PULP Platform at ETH Zurich and the University of Bologna.
(top 30 of 34)
Rust
91.4%
C++
3.8%
Shell
3.6%