Skip to content

Latest commit

 

History

History
111 lines (80 loc) · 3.81 KB

README.md

File metadata and controls

111 lines (80 loc) · 3.81 KB

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 of IP cores and dependencies in hardware design workflows.

Features

  • 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

Installation

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.

Basic Commands

  • vpm install <top_module.v> <repo_url>: install a .v file and all submodule dependencies
  • vpm docs <top_module.v> <repo_url>: generate documentation for anything

docs

Configuration

vpm.toml

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.

vpm.lock (autogenerated)

[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"}

Enterprise version

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.

Support

For issues and feature requests, please email [email protected].