What is IPM and how to use it?

This is a summary on Efabless' IP Manager (IPM), and how to use it

IPM is an open-source ChipIgnite Program IPs Package Manager; it is meant to provide a mean for distributing high quality IPs. IPM is tied to the IPs that can be found in our Market Place.

Installing IPM

IPM is now on PyPi, you can install it using this command:

pip install ipmgr

Verify that is it working

ipm --version

Usage

List all available IPs

You can do that by visiting the Market Place, Or using this command

ipm ls-remote

Get more info about a specific IP from the CLI

ipm info <IP_NAME>

Install IP

ipm install <IP_NAME> [OPTIONS]

Options:

  --version    Install IP with a specific version

  --ip-root    IP installation path [default: {PWD}/ip]

  --ipm-root  Path to the IPM root where the IPs will reside  [default: ~/.ipm]

  --help           Show this message and exit

IPM installs the IPs in a shared directory ipm-root which is by default set to ~/.ipm, then it will create a symlink to ip-root which is by default set to {PWD}/ip.

IPM will create a dependencies.json file under ip-root, which will have all the IPs that you used in your project. Push this file to your repo in order to have a reproducible project.

Install IPs from dependencies file

ipm install-dep [OPTIONS]

Options:

  --ip-root    IP path [default: {PWD}/ip/dependencies.json]

  --ipm-root  Path to the IPM root where the IPs will reside  [default: ~/.ipm]

  --help           Show this message and exit

This will download the IPs in the dependencies.json, with the same versions that it used inside the file

Uninstall IPs

ipm uninstall <IP_NAME> [OPTIONS]

Options:

  --version     Uninstall IP with a specific version

  -f, --force Forces the uninstall

  --ipm-root   Path to the IPM root where the IPs will reside  [default: ~/.ipm]

  --help            Show this message and exit

It is advised to use this command rather than deleting the IP manually

Remove IP from project

ipm rm <IP_NAME> [OPTIONS]

Options:

  --ipm-root  Path to the IPM root where the IPs are installed  [default: ~/.ipm]

  --ip-root      IP path [default: {PWD}/ip]

  --help             Show this message and exit

Update IP

ipm update [IP_NAME][OPTIONS]

Options:

  --ipm-root  Path to the IPM root where the IPs will reside  [default: ~/.ipm]

  --ip-root    IP path [default: {PWD}/ip]

  --help           Show this message and exit

If an IP_NAME is provided it will only update this IP, if not it will update all installed IPs