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
verifydirectory should include basic unit tests to help the designers build their verificationbus_wrapperdirectory contains RTL for IP wrappers to ease system bus connectionfwdirectory contains device drivers (.cand.hfiles)
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)
| File | Size | Uploaded | |
|---|---|---|---|
| cf_ipm-1.3.2.tar.gz | 25.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|