Skip to content
/ vpm Public
forked from getinstachip/vpm

Verilog package manager written in Rust

Notifications You must be signed in to change notification settings

Jag-M/vpm

This branch is 1 commit ahead of, 307 commits behind getinstachip/vpm:main.

Repository files navigation

Verilog Package Manager (VPM)

release downloads

VPM is a package manager for Verilog projects being piloted at Stanford and UC Berkeley. It's designed to simplify the management, reuse, and communication of IP cores and dependencies in hardware design workflows. Easily import modules for use, manage dependencies, and create documentation to acceperatebyour design process.

Features

  • Install submodules within repositories with dependencies automatically resolved
  • Automatically handle synthesis collateral including what's needed for build (COMING SOON!)
  • Module version control with a .lock file and customizability with a .toml file
  • Automated comprehensive documentation generation for modules

Installation

To install VPM, you don't need any dependencies! Just run the following command:

curl -f https://getinstachip.com/install.sh | sh

After installation, you can use the vpm command in any terminal.

Basic Commands

  • vpm install <top_module.v> <repo_url>: install a Verilog (.v) file and all submodule dependencies

vpm_install

  • vpm docs <top_module.v> <repo_url>: generate documentation for any module

docs

Configuration

Close your eyes, relax. Submodule dependencies are taken care of with our parser. Use the appropriate fields in vpm.toml to adjust the properties of your project. We are working on handling synthesis collateral.

vpm.toml

Example vpm.toml file:

[tool.vpm.library]
name = "library_name"
version = "0.3.5"
description = "Most important library in the world"
authors = ["First Last"]
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]
configparam1=true
configparam2=false

[tool.vpm.docs]
docspath="./not-standard-docs-path"
docsoption1=true
docsoption2=false

[tool.vpm.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"}

[tool.vpm.dev-dependencies]
"./path/to/file" = {"version"="1.1.1", alias="unique_library_name", modules = ["m1", "m2"], branch="not-main", commit="hash"}

vpm.lock

Example vpm.lock file:

[tool.vpm.library]
name = "library_name”
version = "0.3.5"
description = "Most important library in the world"
authors = ["First Last"]
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]
configparam1=true
configparam2=false

[tool.vpm.docs]
docspath="./not-standard-docs-path"
docsoption1=true
docsoption2=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"}

Enterprise version

We are receiving overwhelming interest for an enterprise version with additional features to manage internal IP for ASIC/FPGA companies.

Join the waitlist if you're interested, we're launching an enterprise batch trial soon.

Support

For issues and feature requests, please email sathvikr@getinstachip.com or create an issue on GitHub.

About

Verilog package manager written in Rust

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 68.4%
  • Shell 31.6%