Package manager for Open Source ASIC IPs
Project description
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
[!NOTE]
IPM installs the IPs in a shared directoryipm-rootwhich is by default set to~/.ipm, then it will create a symlink toip-rootwhich is by default set to{PWD}/ip.
[!TIP]
IPM will create adependencies.jsonfile underip-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
[!NOTE] This will download the IPs in the
dependencies.json, with the same versions that it used inside the file
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
[!TIP] 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
[!NOTE] If an IP_NAME is provided it will only update this IP, if not it will update all installed IPs
Adding your IP to IPM
[!CAUTION] Please contact us directly at info@chipfoundry.io to add 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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cf_ipm-1.2.2.tar.gz.
File metadata
- Download URL: cf_ipm-1.2.2.tar.gz
- Upload date:
- Size: 23.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83ec0f071c4aba7a74cbca62e7fcd47afb103142458e9f4f6a726be575a8ba7c
|
|
| MD5 |
001d1f1e275bdfcd9ecb95d03ff5ee75
|
|
| BLAKE2b-256 |
58a81e4c987ff12bc8cba23d8bdad365511e0a68ab2b538f87bff0a3545e1d62
|
File details
Details for the file cf_ipm-1.2.2-py3-none-any.whl.
File metadata
- Download URL: cf_ipm-1.2.2-py3-none-any.whl
- Upload date:
- Size: 24.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25ba15d94795970407bd38742a131e1ce09ebdd60b3196697a48edb60bac77ce
|
|
| MD5 |
822f70c6dc12e5d2038b6a3b07a9f1c7
|
|
| BLAKE2b-256 |
565ab59eb8608c5e2637fc3e9f2c7efe23f32cc5846d0212f595e9e25d61a936
|