VPM is a package manager for Verilog projects, being piloted at Stanford and UC Berkeley. It's designed to simplify the management of IP cores and dependencies in hardware design workflows.
- Install submodules within repositories with dependencies automatically resolved
- Automatically handle synthesis collateral including what's needed for build (COMING SOON!)
- God-tier version control with a .lock file
To install VPM, you don't need any dependencies! Just run the following command:
curl -sSfL https://raw.githubusercontent.com/getinstachip/vpm/main/install.sh | sh
After installation, you can use the vpm
command in any terminal.
vpm install <top_module.v> <repo_url>
: install a .v file and all submodule dependenciesvpm docs <top_module.v> <repo_url>
: generate documentation for anything
Example vpm.toml
file:
[tool.vpm.library]
name = "krishna_library"
version = "0.3.5"
description = "Most important library in the world"
authors = ["Radhakrishna Sanka"]
license = [
{type="BSD-3-Clause", source=["folder_with_artifacts/*.whatever"]},
{type="CC-4", source=["folder_with_artifacts/*.whatever"]},
{type="Copyright@RandomStuffyCompany", source=["whatever"]},
]
include = [
"folder_with_modules/*",
]
[tool.vpm.docs]
docspath="./not-standard-docs-path"
futuredocsoption1=true
futuredocsoption2=false
[tool.vpm.dependencies]
"https://github.com/ZipCPU/zipcpu" = {"version"="1.1.1", alias="unique_library_name", modules = ["m1", "m2"], branch="not-main", commit="hashwhenwedontgivesemver"}
"https://github.com/ZipCPU/zipcpu" = {"version"="1.1.1", alias="unique_library_name", modules = ["m1", "m2"], branch="not-main", commit="hashwhenwedontgivesemver"}
[tool.vpm.dev-dependencies]
"./path/to/file" = {"version"="1.1.1", alias="unique_library_name", modules = ["m1", "m2"], branch="not-main", commit="hashwhenwedontgivesemver"}
[tool.vpm.config]
futureconfigparam1=true
futureconfigparam2=false
Close your eyes, relax. Submodule dependencies are taken care of with our parser. We are working on handling synthesis collateral.
[tool.vpm.library]
name = "krishna_library"
version = "0.3.5"
description = "Most important library in the world"
authors = ["Radhakrishna Sanka"]
license = [
{type="BSD-3-Clause", source=["folder_with_artifacts/*.whatever"]},
{type="CC-4", source=["folder_with_artifacts/*.whatever"]},
{type="Copyright@RandomStuffyCompany", source=["whatever"]},
]
include = [
"folder_with_modules/*",
]
[tool.vpm.config]
futureconfigparam1=true
futureconfigparam2=false
[tool.vpm.docs]
docspath="./not-standard-docs-path"
futuredocsoption1=true
futuredocsoption2=false
[tool.vpm.lock-dependencies]
"https://github.com/ZipCPU/zipcpu" = {"version"="1.1.1", alias="unique_library_name", modules = ["m1", "m2"], branch="not-main", commit="hash"}
"https://github.com/ZipCPU/zipcpu" = {"version"="1.1.1", alias="unique_library_name", modules = ["m1", "m2"], branch="not-main", commit="hash"}
We are receiving overwhelming interest for an enterprise version to manage internal IP for ASIC/FPGA companies.
Join the waitlist if you're interested, we're launching an enterprise batch trial soon.
For issues and feature requests, please email [email protected].