Skip to main content

IPM

IPM is an open-source ChipIgnite Program IPs Package Manager; it is meant to provide a mean for distributing high quality IPs.

Installation

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

pip install cf-ipm

To verify it is working run:

ipm --version

Usage

List all available IPs

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

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

Uninstalling 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

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

Adding your IP to IPM

To add your own IP to our package manager, you should follow these steps:

1. Package your IP with the following folder structure:

All IPs must include:

- readme.md
- <ip>.json
- doc/datasheet.pdf
- hdl/rtl/bus_wrapper **optional**
- fw
- verify/beh_model

All digital and analog hard IPs must include:

- hdl/gl
- timing/lib
- timing/sdf
- timing/spef
- layout/gds
- layout/lef

All Analog IPs must include:

- spice

All soft digital IPs must include:

- hdl/rtl/design
- verify
- pnr **optional**
- verify/utb

Directory structure should look like:

├── readme.md
├── <ip>.json
├── doc\
│   └── datasheet.pdf
├── layout\
│   ├── gds\
│   └── lef\
├── timing\
│   ├── lib\
│   ├── spef\
│   └── sdf\
├── spice\
├── hdl\ 
│   ├── rtl\
│   │   ├── bus_wrapper\
│   │   └── design\
│   └── gl\
├── fw\
├── verify\
│   ├── utb\
│   └── beh_model\
└── pnr\

NOTE

  • verify directory should include basic unit tests to help the designers build their verification
  • bus_wrapper directory contains RTL for IP wrappers to ease system bus connection
  • fw directory contains device drivers (.c and .h files)

2. IP metadata file structure

Your <ip>.json file should look like:

{
    "info": {
        "name": "<ip name>",
        "description": "<ip_description>",
        "repo": "<src repo>",
        "owner": "<owner of IP>",
        "license": "<license of IP>",
        "author": "<author of IP>",
        "email": "<email of author/owner>",
        "version": "<IP version>",
        "date": "<mm-dd-yyyy>",
        "category": "<analog/digital/AMS>",
        "tags": [
            "<tags for ip>"
        ],
        "bus": [
            "<APB|AHBL|WB|generic>"
        ],
        "type": "<hard|soft|firm|hybrid",
        "maturity": "<Verified|FPGA Validated|SI Validated|Production Ready>",
        "cell_count": "<number of cells in ip>",
        "width": "<width of IP in um>",
        "height": "<height of IP in um>",
        "technology": "<sky130A|sky130B|gf180mcuC|gf180mcuD|n/a>",
        "clock_freq_mhz": "<clock frequency of IP>",
        "supply_voltage": [
            "<supply voltage of IP>"
        ]
    }
}

All the above fields must be included in your file

3. Create tarball

Compress your folder into a tarball (tar.gz) with the name <version>.tar.gz, where version is the version of your release, you can do that by running:

cd <ip_directory>
tar czf <version>.tar.gz *

4. Create release

create a new release in your GH repo with the tag <version> and add the tarball created there to the release's assets

5. IPM package_check

Once you are done you can run a package_check function locally by running ipm package-check which checks that you’ve completed the above steps successfully. Options for IP name, version and the GH repo are required

NOTE: THIS IS STILL A WIP

6. Submit

If the pre-check was successful you can submit your IP through the form ......

IPM team will then perform set of sanity checks to ensure the quality of the submitted IP. This checker shall ensure:

  • That the IP is LVS clean
  • That the IP is DRC clean

Additional Docs

Metadata

Release files for cf-ipm 1.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cf-ipm 1.3.2
File Size Uploaded
cf_ipm-1.3.2.tar.gz 25.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cf-ipm 1.3.2
File Interpreter ABI Platform
cf_ipm-1.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 53.1 kB

Release files / cf_ipm-1.3.2.tar.gz

Download URL cf_ipm-1.3.2.tar.gz
Size 25.9 kB
Tags Source
SHA-256 checksum
How to use checksums
00a029375de4ba2511ab72a64c02fd48712a563d8732f552e3c91e87b8c4425e
BLAKE2b-256 checksum
How to use checksums
7c8076d07033fff580eff79b6573dbc36c193a121b5cf65678a153126a9ee780
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.18

Release files / cf_ipm-1.3.2-py3-none-any.whl

Download URL cf_ipm-1.3.2-py3-none-any.whl
Size 27.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f6edb7942564f8de9d62e747cf785f8fd1886bd668f17dc1e70884f49d52dd49
BLAKE2b-256 checksum
How to use checksums
652686a3c30c09eb4c052a1318620e3c37fcdb17cd48d6ce438c8aadc5552884
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.18

Release history Release notifications | RSS feed

This release

1.3.2 This release

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page