bender 0.32.0

A dependency management tool for hardware projects.
docs.rs failed to build bender-0.32.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: bender-0.31.0

Bender

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.

Build Status Crates.io License

Why Bender

  • Reproducible dependency resolution: Resolve IP dependencies from Git tags, revisions, or local paths and record the exact state in Bender.lock.
  • HDL-aware source collection: Keep source ordering, include directories, defines, and target-specific file groups in one place.
  • Tool-agnostic workflow: Generate inputs for QuestaSim, VCS, Vivado, Verilator, and other flows without forcing a particular setup.
  • Practical local development: Work on dependencies locally and modify them conveniently as part of your development flow.

Quick Start

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

How It Works

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.

Documentation

The full documentation lives at pulp-platform.github.io/bender/.

License

Bender is licensed under either of:

at your option.


Bender is maintained by the PULP Platform at ETH Zurich and the University of Bologna.